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

Posted rainbowinthesky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程小记,线程控制并发相关的知识,希望对你有一定的参考价值。

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();
});

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

以上是关于多线程小记,线程控制并发的主要内容,如果未能解决你的问题,请参考以下文章

多个请求是多线程吗

线程学习知识点总结

java多线程的入门小记

python多线程并发数量控制

Java核心-多线程-并发控制器-Semaphore信号量

C#多线程并发精确控制例子