繁体   English   中英

在调用SleepConditionVariableSRW()时,标志值应该是什么,以指示SRW锁处于独占模式?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM