2011-12-29 55 views
0

我知道我不能在值类型使用锁(为SyncLock),在这篇文章中解释说:我需要线程锁定值类型(布尔尤其是)

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

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

回答

0

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