0

我知道我不能在值类型上使用锁 (SyncLock),如本文所述:

http://msdn.microsoft.com/msdnmag/issues/03/01/NET/

但我的问题是,这是否意味着我不需要?还是我需要将布尔值包装在一个对象中,以便可以锁定它?如果答案是否定的,我不需要锁定它,当两个线程尝试同时更改值时会发生什么?在我目前正在处理的应用程序中,两个线程可能会尝试同时将其设置为 true 和 false。

4

1 回答 1

0

布尔值本身不需要锁。
如果它在你的脚下发生变化,你可能会得到旧值或新值,没关系。
然而,通常情况下,变量本身并不存在。它的价值与他人的价值有关,你需要保护整个群体。
例如,您可能有一个列表和一个布尔指示(如果它已满)。您需要一个覆盖它们的锁,以保持两者一致。

于 2011-12-29T14:28:49.950 回答