[英]While calling SleepConditionVariableSRW() what should be the flag value to indicate that the SRW lock is in exclusive mode?
MSDN文档SleepConditionVariableSRW指出-
标记[in]-
如果此参数为CONDITION_VARIABLE_LOCKMODE_SHARED,则SRW锁定处于共享模式。 否则,锁定处于互斥模式。
由此推断,除CONDITION_VARIABLE_LOCKMODE_SHARED以外的任何其他值都将表示独占模式SRW锁定。 但是,当我尝试提供标志值CONDITION_VARIABLE_LOCKMODE_SHARED + 1
,经过几次尝试后,函数SleepConditionVariableSRW()
失败了。*
我将标志值设置为0,并通过了所有涉及SleepConditionVariableSRW()
的测试用例(一遍又一遍)。
谁能确认这个标志的值是否仅是暗指SRW锁就应该为“ 0”? 我在MSDN文档中找不到任何提及。
* 我也尝试了其他非零值。
通常将称为Flags的形式参数实现为bitflags。 对于SleepConditionVariableSRW ,当前仅使用一个值。 CONDITION_VARIABLE_LOCKMODE_SHARED
值为0x1
(即“位0”)。 所有其他位当前未使用。
要使用排他锁定模式,必须取消设置位0。 由于当前没有定义任何其他标志,因此排他锁定模式的唯一合法输入为0。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.