[C#]多线程读取数组的小例子

这是一个多线程同时读取一个数组的示例,是回答了一个网友提问的文章.

  1.         private static string[] Arr = new string[1000];
  2.         private static int arrindex = 0;
  3.         const int N = 5;
  4.         private static ManualResetEvent ent = new ManualResetEvent(false);
  5.         static void Main()
  6.         {
  7.             for (int i = 0; i < 1000; i++)
  8.             {
  9.                 Arr[i] = i.ToString();
  10.             }
  11.             arrindex = 0;
  12.             for (int threadnum = 0; threadnum < N; threadnum++)
  13.             {
  14.                 Thread s = new Thread(OutputN);
  15.                 s.Name = "thread" + threadnum.ToString();
  16.                 s.IsBackground = true;
  17.                 s.Start();
  18.                 Thread.Sleep(0);
  19.             }
  20.             Console.Read();
  21.         }
  22.         private static void OutputN()
  23.         {
  24.             while (arrindex < 1000)
  25.             {
  26.                 lock (Arr)
  27.                 {
  28.                     Console.WriteLine("Thread{0} Arr{1} is: {2}", Thread.CurrentThread.Name, arrindex, Arr[arrindex]);
  29.                     arrindex++;
  30.                 }
  31.                 Thread.Sleep(0);
  32.             }
  33.         }

 

小结

运行下就可以看出结果来了,例子不会很难,但是可能存在数组越界的问题,我自己测试是测试不出来,但是,有人复制了就会出现越界问题.如果你测试了发现了问题,请不要吝啬告诉我,谢谢.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值