大家都用很多List。我需要遍歷這個列表,所以我使用已知的SyncRoot模式。列表<T>未實現SyncRoot!
最近我在this的帖子中發現應該避免使用SyncRoot來支持「嵌入」線程安全(每種方法都會鎖定一個私有對象,而不用使用SyncRoot屬性來暴露它)。我能理解它,部分我同意這一點。
的問題是,List<T>類沒有實現SyncRoot屬性,即使實現了ICollection接口,它暴露SyncRoot上財產。我說這bause代碼
List<int> list = new List<int>()
list.SyncRoot;
給我下面的編譯器錯誤:
error CS0117: 'System.Collections.Generic.List' does not contain a definition for 'SyncRoot'
...如果這是真的,我怎麼能進行遍歷時,同步類型列表<牛逼>的公共屬性超過它?
我從來沒有發現SyncRoot在現實生活中能夠很好地工作,因爲鎖定在更高級別上往往更好,而不是鎖定單個集合 – 2010-11-01 09:04:09