多线程小记,线程控制并发
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(); });
适合大量线程做相同事情的适合来控制并发,蛮有用的
以上是关于多线程小记,线程控制并发的主要内容,如果未能解决你的问题,请参考以下文章