多线程使用AutoResetEvent WaitOne独立于c#中的每个线程

时间:2018-04-01 09:41:42

标签: c# multithreading thread-safety

您好我有多线程应用程序(c#iis app)。我将多线程作为后台线程启动。在每个线程内部我都有一个逻辑使用autoresetevent.waitone.But作为结果当一个线程使用waitone命令时其他线程也进入睡眠模式而不工作。如何分离WaitOne逻辑而不影响其他线程?

Thread1 
    AutoResetEvent receiveCompleteEvent=null;
    using(receiveCompleteEvent=new System.Threading.AutoResetEvent(false))
    {
    DoJob1();...

    receiveCompleteEvent.WaitOne();
    }

Thread2
    AutoResetEvent receiveCompleteEvent=null;
    using(receiveCompleteEvent=new System.Threading.AutoResetEvent(false))
    {
    DoJob2();...

    receiveCompleteEvent.WaitOne();
    }

当Thread1工作或相反时,Thread2不工作。 我想当thread1进入waitone并进入休眠状态时,thread2仍在独立工作。

1 个答案:

答案 0 :(得分:0)

这是因为每个线程都从另一个线程覆盖ARE实例。如果你将等待事件分开,那么就会遇到竞争条件并且没有同步。

那么,你想要互相排斥你想要竞争条件吗?您当前的代码设法以某种方式实现这两者。