gpt4 book ai didi

c# - 在 .Set 之后直接在 EventWaitHandle 上调用 .Close (.Dispose) 是否安全?

转载 作者:行者123 更新时间:2023-12-03 12:47:01 24 4
gpt4 key购买 nike

我有一个线程在等待 EventWaitHandle (AutoResetEvent):

AutoResetEvent.WaitOne();

我有另一个线程通知第一个线程继续

AutoResetEvent.Set();
AutoResetEvent.Close();

在 .Set 之后直接调用 .Close 是否安全,换句话说,是否可以保证等待线程在处理 AutoResetEvent 之前继续运行?

最佳答案

是的,如果事情完全按照您问题中的描述进行,那是安全的。如果您知道在您调用 set 时所有线程都已经在等待,那么这些线程将收到信号并且一切都会好起来,因为所有等待的线程都保证在调用 set 返回之前被释放。

但是,如果您出于某种原因遇到竞争并调用 set 和 close before 线程开始等待,您将在尝试等待时遇到异常。所以在实践中你最好避免这种模式。恕我直言

关于c# - 在 .Set 之后直接在 EventWaitHandle 上调用 .Close (.Dispose) 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33869302/

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