我知道我不能在值类型上使用锁(SyncLock),如本文所述:
http://msdn.microsoft.com/msdnmag/issues/03/01/NET/
但我的问题是,这是否意味着我不需要?或者我是否需要将布尔包装在一个对象中,以便它可以被锁定?如果答案是否定的,我不需要锁定它,当两个线程同时尝试更改值时会发生什么?在我目前正在处理的应用程序中,两个线程可能会尝试同时将其设置为true和false。
答案 0 :(得分:0)
布尔值本身不需要锁定
如果它在你的脚下发生变化,你可能会得到旧值或新值,这没关系
但是,通常情况下,变量本身不存在。它的价值与他人的价值有关,你需要保护整个集团
例如,您可能有一个列表,如果它已满,则为布尔指示。你需要一个覆盖它们的锁,以保持两者一致。