在.NET中,当需要动态控制线程的数量时,我们可以使用Semaphore来控制最大线程数。
关于Semaphore代码示例
代码说明
new Semaphore(0, 5); 构造函数第一个参数,表示我们还可使用的授权数。 第二个参数表示我们最大可申请的授权数。
当授权数用完时,则会造成线程阻塞直到可申请到Semaphore的授权。所以如上代码我一开始初始化了0个授权数,所以没有授权则会被阻塞。
在main方法快运行完时,我使用代码semaphore.Release(5);授权了5个请求。 这时还阻塞在semaphore.WaitOne();的代码得到授权则开始继续往下运行,打印出print:{0} 。