2011-12-29 63 views
0

我知道我不能在值類型使用鎖(爲SyncLock),在這篇文章中解釋說:我需要線程鎖定值類型(布爾尤其是)

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

但我的問題是,這是否意味着我不需要?或者我是否需要將布爾值封裝在一個對象中,以便它可以被鎖定?如果答案是否定的,我不需要鎖定它,當兩個線程同時嘗試更改值時會發生什麼情況?在我目前正在使用的應用程序中,可能有兩個線程可能會嘗試將它同時設置爲true和false。

回答

0

布爾本身不需要鎖。
如果它在你腳下變化,你可能會得到舊值或新值,而且沒關係。
但是,通常情況下,變量本身不存在。它的價值與他人的價值有關,你需要保護整個團體。
例如,您可能有一個列表,如果它已滿,可以有布爾指示。您需要一個涵蓋兩者的鎖,以保持兩者一致。

相關問題