SetEvent是否取消阻止一个或所有等待的线程?

时间:2010-03-08 17:54:42

标签: c winapi

如果两个或多个线程正在等待某个事件,SetEvent是否会取消阻止其中一个或所有线程(或其中一些)?

2 个答案:

答案 0 :(得分:4)

这取决于它是手动还是自动重置事件。如果是手动复位,则可以释放多个线程,直到复位为止。如果它是自动重置,则只会发出一个信号。

答案 1 :(得分:2)

唤醒一个线程后,将重置自动重置事件。手动复位甚至将保持设置,直到它复位,因此它可以唤醒任意数量的线程。如果你想确保等待它的所有线程只被唤醒一次(但是如果你关心它,它会指出一个可能的设计问题),那么知道何时重置它有点困难。