我是否需要线程锁定值类型(特别是布尔值)

时间:2011-12-29 12:59:44

标签: multithreading locking synclock

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

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

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

1 个答案:

答案 0 :(得分:0)

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