【发布时间】:2015-06-30 04:06:07
【问题描述】:
我正在尝试理解我在网上找到的这段代码:
private EventWaitHandle wh = new AutoResetEvent();
private void WorkerThread()
{
while(true)
{
wh.WaitOne();
//Do work.
}
}
public void StartWorking()
{
wh.Set();
}
所以我知道线程一旦到达 WaitOne() 就会阻塞,直到 Set() 被调用,但是如果多个线程到达 .WaitOne() 怎么办?他们会全部被阻止还是只有一个?如果调用 Set() 是释放所有线程还是只释放一个?
编辑-我正在阅读更多内容并尝试它和一个后续问题:如果 ManualResetEvent 完成了我上面描述的内容,当有多个线程同时等待时它的行为如何? AutoResetEvent 是否会通过一次 Set() 调用一次释放它们?
【问题讨论】:
标签: c# multithreading locking blocking