码迷,mamicode.com
首页 > 编程语言 > 详细

多线程小记,线程控制并发

时间:2018-08-14 11:13:40      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:有一个   slim   one   lease   flag   控制   无法   退出   多线程   

private AutoResetEvent exitEvent;
private void ProcessA()
{
   while (true)
   {
       Console.WriteLine("do some thing");
       if (exitEvent.WaitOne(waitTime))
       {
       break;
     }
   }
  Console.WriteLine("exit");
}
exitEvent.Set();
private void ProcessB()
{
   while (true)
   {
       Console.WriteLine("do some thing");
      Thread.Sleep(waitTime)
   }
}

关于线程小模型,出现两个处理的函数,一个是简单的Sleep等待,一个是信号量,但是都有一个缺陷,就是不管是那个都在执行的时候(do some thing)无法退出。信号量好一些,在等待的时候可以控制退出,Sleep的话只能引发Exception来退出(或者在While设置flag,但是也一样)。

 public SemaphoreSlim semaphoreSlim = new SemaphoreSlim(10);//并发限制为10

在多线程的模型里可以控制线程数量来控制并发

semaphoreSlim.Wait();
ThreadPool.QueueUserWorkItem(t => {
   Console.WriteLine("do some thing");
  semaphoreSlim.Release();
});

适合大量线程做相同事情的适合来控制并发,蛮有用的

多线程小记,线程控制并发

标签:有一个   slim   one   lease   flag   控制   无法   退出   多线程   

原文地址:https://www.cnblogs.com/RainbowInTheSky/p/9472342.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!