JP.*_*JP. 5 c++ events winapi multithreading semaphore
基本上我需要替换 Condition Variable 和 SleepConditionVariableCS,因为它只支持 Vista 和 UP。(对于 C++)
有人建议使用Semaphore,我也找到了CreateEvent。
基本上,我需要有一个线程等待 WaitForSingleObject,直到一个或多个其他线程告诉我有事情要做。
我应该在什么情况下使用信号量和获胜事件?
谢谢
在你的情况下,我会自己使用一个事件。当您希望线程开始运行时,向该事件发出信号。任务完成 :)
编辑:信号量和事件之间的区别归结为内部计数。如果有多个ReleaseSemaphore,那么2个WaitForSingleObjects也会被释放。事件本质上是布尔值。如果两个不同的地方同时发出信号事件,那么等待将被释放,并将被设置回未发出信号的状态(取决于您是否有自动或手动重置)。如果您需要同时从多个位置发出信号并且等待线程运行两次,那么此事件行为可能会导致死锁。