线程控制

以前专门测试过,但长时间不用又全部忘记了,再写一个:

1.  AutoResetEvent类

AutoResetEvent a = new AutoResetEvent(false);  //false表示初始无信号
 bool b1=  a.Set();            //给信号
  bool b2 =    a.Reset();   //不给信号
  bool b =a.WaitOne();    //等待信号,函数可以加个超时时长


 AutoResetEvent.WaitAll(new WaitHandle[] { a });    //等待全部都有信号

AutoResetEvent.WaitAny(new WaitHandle[] { a }); //等待任一个有信号

 

2. Semaphore类

信号量,可以有多个信号,前面AutoResetEvent只有一个信号

Semaphorem= new Semaphore(0, MaxSize);
  m.Release();    //释放一个信号
  m.WaitOne();   //等待一个信号

 

参考:https://www.cnblogs.com/zhan520g/p/11388591.html

posted @ 2021-05-28 09:38  81  阅读(44)  评论(0编辑  收藏  举报