我想知道如何锁定一个 bool 值,据我所知,它需要创建另一个“对象”并将其用于锁定机制......我的问题是我不明白这 block 代码:
lock (this.mLock) { this.end5 = true; }
如果同时在代码中的其他地方/在另一种方法中,我正在 if 语句中读取该变量 (end5),那么实际上会做任何事情吗?
if(this.end5==true)
DO SOMETHING;
如果我错了,如果有人能向我解释这一点,我将不胜感激,但 IF 中的“读取”不会丝毫不关心 mLock 已被锁定,因此“读取”可能会在End5 正在设置,因此根本没有任何用处??如果是这样,我如何确保“读取”在读取之前等到 end5 被“释放”?
抱歉,如果我只是感到困惑...谢谢。
请您参考如下方法:
你没有看错。
lock 限制对临界区的访问。在您的示例中,您将 end5 设置为关键部分......但不是阅读它。所以锁对你的要求没有帮助。您还想检查读取端的锁。
但是您必须小心定义临界区的方式。如果您需要保证 end5 的值在整个 DO SOMETHING 过程中保持不变,那么它需要位于另一个临界区内。请确保不要造成任何死锁:)
