基本上我需要替换Condition Variable和SleepConditionVariableCS,因为它只支持Vista和UP。 (对于C ++)
有人建议使用Semaphore,我也找到了CreateEvent。
基本上,我需要在WaitForSingleObject上进行线程等待,直到有一个或多个其他线程告诉我有事情可做。
我应该在哪种情况下使用Semaphore vs Win Event?
由于
答案 0 :(得分:3)
在你的情况下,我会自己使用一个活动。当您希望线程开始时发出信号。完成工作:))
编辑:信号量和事件之间的差异归结为内部计数。如果有多个ReleaseSemaphores,那么也将释放2个WaitForSingleObjects。事件本质上是布尔。如果两个不同的位置同时发生信号事件,则等待将被释放并且将被设置回无信号(取决于您是否具有自动或手动重置)。如果您需要同时从多个位置发出信号并且等待线程运行两次,那么此事件行为可能会导致死锁。
答案 1 :(得分:3)
在一般情况下,更换Windows上的条件变量非常困难且容易出错。之一:
答案 2 :(得分:3)
尽可能使用boost::condition_variable。我之前一直走在这条路上(参见microsoft.public.win32.programmer.kernel上的消息)并且Win32事件API不够用;使用事件时遇到问题。