ManualEventReset - 等待两者中的任何一个
ManualEventReset - wait for any of both
考虑我已经过了两个ManualEventReset instances
public void MyApiCall(ManualResetEvent ev1, ManualResetEvent ev2)
{
//my code
}
现在,我必须为两者中的任何一个“WaitOne
”(无论其中一个,我需要在其中一个发出信号后立即继续)。不改也可以 api?
解决方案之一是自旋锁:
while (!ev1.WaitOne(0) && !ev1.WaitOne(0))
{
Thread.Sleep(500);
}
但是不知道有没有更好的解决办法
您正在寻找 WaitHandle.WaitAny.
示例:
WaitHandle.WaitAny(new WaitHandle[] { ev1, ev2 });
考虑我已经过了两个ManualEventReset instances
public void MyApiCall(ManualResetEvent ev1, ManualResetEvent ev2)
{
//my code
}
现在,我必须为两者中的任何一个“WaitOne
”(无论其中一个,我需要在其中一个发出信号后立即继续)。不改也可以 api?
解决方案之一是自旋锁:
while (!ev1.WaitOne(0) && !ev1.WaitOne(0))
{
Thread.Sleep(500);
}
但是不知道有没有更好的解决办法
您正在寻找 WaitHandle.WaitAny.
示例:
WaitHandle.WaitAny(new WaitHandle[] { ev1, ev2 });