基本上我需要替换条件变量和SleepConditionVariableCS,因为它只支持Vista和UP。 (For C++)Win32事件vs信号量
有人建议使用Semaphore,我也发现CreateEvent。
基本上,我需要等待WaitForSingleObject上的线程,直到一个或多个其他线程告诉我有什么事要做。
在哪种情况下,我应该使用信号量还是赢运动?
谢谢
基本上我需要替换条件变量和SleepConditionVariableCS,因为它只支持Vista和UP。 (For C++)Win32事件vs信号量
有人建议使用Semaphore,我也发现CreateEvent。
基本上,我需要等待WaitForSingleObject上的线程,直到一个或多个其他线程告诉我有什么事要做。
在哪种情况下,我应该使用信号量还是赢运动?
谢谢
在你的情况下,我会自己使用一个事件。当您希望线程开始时发出事件信号。工作完成:)
编辑:信号量和事件之间的差异归结为内部计数。如果有多个ReleaseSemaphores,那么2个WaitForSingleObjects也将被释放。事件本质上是布尔型的。如果两个不同的地方同时发生信号事件,则等待将被释放,并且将被重新设置为未标记(取决于是否具有自动或手动重置)。如果您需要同时从多个位置发送信号并等待线程运行两次,则此事件行为可能导致死锁。
在一般情况下,在Windows上替换条件变量非常困难且容易出错。或者:
如果可能的话,使用boost::condition_variable。我之前就已经走过了这条路(见microsoft.public.win32.programmer.kernel上的msg),而Win32 Event API还不够用;使用事件有问题。