編輯:事實證明,當我在瀏覽我發現了一個問題似乎是和我一樣,我沒有發現更早:Difference between lock(locker) and lock(variable_which_I_am_using)正在使用現有對象而不是創建特定的鎖對象安全嗎?
我在看一些代碼,並試圖圍繞讓我的頭鎖定的東西,我到了那裏我想。
現在我在一些代碼注意到我檢討了對象時,像這樣創建:
private HashSet<Graphic> clustersInUse = new HashSet<Graphic>();
然後進一步在代碼中使用像這樣:
lock (clustersInUse)
{
// Do something with the Hashset
}
現在,有一個這樣做的問題,而不是爲鎖創建一個特定的對象。就像這樣:
private object clusterLocker = new object();
一下如果上面不知何故clustersInUse
被放到一個公共財產,那麼,什麼情況?
此外,如果有東西試圖訪問clustersInUse
而不鎖定它,而它被鎖定在另一個線程中會發生什麼呢?
因此,基本上所有的問題或潛在的問題是,爲什麼總的來說最好只是創建一個特定的鎖定對象?是否有任何情況下可以使用對象本身?也許是表現還是什麼? – Firedragon
@Firedragon:它總是好的*不*使用對象本身。不要讓生活複雜化。 –