gpt4 book ai didi

c# - 如何正确使用锁具

转载 作者:太空宇宙 更新时间:2023-11-03 21:29:31 25 4
gpt4 key购买 nike

我想知道如何锁定一个 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 过程中保持不变,那么它需要位于另一个临界区内。请确保不要造成任何死锁:)

关于c# - 如何正确使用锁具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25022299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com