gpt4 book ai didi

c# - 了解多线程和 EventWaitHandle

转载 作者:行者123 更新时间:2023-11-30 20:22:37 25 4
gpt4 key购买 nike

我试图理解我在网上找到的这段代码:

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() 调用一次释放它们吗?

最佳答案

AutoResetEvent:调用一次Set()后,只有一个线程会通过WaitOne();其他线程仍在等待第二个 Set()

ManualResetEvent:调用一次Set()后,线程将永远通过WaitOne(),除非您手动调用Reset( )

关于c# - 了解多线程和 EventWaitHandle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31129347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com