您好我有多线程应用程序(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仍在独立工作。
答案 0 :(得分:0)
这是因为每个线程都从另一个线程覆盖ARE实例。如果你将等待事件分开,那么就会遇到竞争条件并且没有同步。
那么,你想要互相排斥或你想要竞争条件吗?您当前的代码设法以某种方式实现这两者。