我正在为Linux应用程序编写Windows端口,我正在尝试找到pthread_cond_wait()
的合适替代品。最接近的替代方案似乎是SleepConditionVariableCS()
。但是我不愿意使用此函数,因为它使用 CriticalSections ,它们基本上是轻量级的递归互斥体。我更喜欢非递归锁定对象替代 - 是否有一个?
P.S。 -
答案 0 :(得分:2)
Windows Vista及更高版本提供Slim Reader/Writer (SRW) Locks作为非递归锁定对象替代 1 。
正如文件所述:
SRW锁定是指针的大小。优点是更新锁定状态的速度很快。缺点是可以存储非常少的状态信息,因此无法递归获取 SRW锁。此外,在共享模式下拥有SRW锁的线程无法将其锁的所有权升级为独占模式。
Windows条件变量可以使用SRW锁而不是CriticalSection锁。请参阅SleepConditionVariableSRW()
。
1 :PS。以下是关于recursive locks 的好与坏的另一种观点。