信号量Semaphore_用来限制线程能运行的数量

 1  /// <summary>
 2     /// 信号量Semaphore的使用-可以用来限制线程能运行的数量。
 3     /// </summary>
 4     class Program
 5     {
 6         //设置一个初始值设为0,最大允许1个线程允许的信号量
 7         static Semaphore semaphore = new Semaphore(0, 1);
 8         static void Main(string[] args)
 9         {
10             for (int i = 1; i <= 5; i++)
11             {
12                 Thread thread = new Thread(new ParameterizedThreadStart(work));
13                 thread.Start(i);
14             }
15 
16             Thread.Sleep(2000);
17             Console.WriteLine("Main thread over!");
18 
19             //释放信号量
20             //Release()相当于是Release(1)
21             semaphore.Release();
22             Console.ReadKey();
23         }
24 
25         static void work(object obj)
26         {
27             //当有线程释放时才会执行.
28             semaphore.WaitOne();
29             Console.WriteLine("Thread {0} start!", obj);
30             //semaphore.Release(); //取消注释,其它线程就会继续执行
31         }
32     }

 

转载于:https://www.cnblogs.com/hepeng/p/6163589.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值