4

我有一个自动重置事件对象,并且有一个线程在等待它。如果现在我调用 SetEvent,是否可以保证当 SetEvent 返回时事件对象是无信号的?

我有两个以 ABAB-... 方式运行的线程。一旦 A 唤醒 B,A 就会开始等待 B。如果我可以在发出信号后立即等待同一个事件对象,那么……我可以保存一个事件对象。

如果你问我为什么不只使用一个线程,它们是在不同的进程中。

4

2 回答 2

4

当服务员被释放时,该事件变为无信号状态。不能保证在调用SetEvent返回之前服务员会被释放。

于 2012-04-24T13:08:05.467 回答
0

一般来说,没有。到那时,另一个线程可能已经发出信号,如果没有线程等待,它将保持设置状态。在只有两个线程的情况下,也许你会没事的。

你为什么还要对这样的“优化”感到厌烦。使用两个事件会更容易调试。

多线程、线程间和进程间通信已经够难了。你不应该增加更多的复杂性。

于 2012-04-24T13:14:01.920 回答