2011-03-31 84 views

回答

7

完全取決於收集; ICollection<T>只是一個界面。

我知道的每個集合只是返回一個Int32字段,它的Count獲取器,所以它通常是原子的。
但是,從來沒有保證計數在您獲取屬性後不會改變。

7

不,因爲你只能對實現做出這個假設,而不是接口。

3
  • 原子只會使意義實施不是接口。你可以有兩個實現:一個線程安全的非線程安全實現。

  • List<T>由於不使用InterLocked,所以不是線程安全的。

+0

如何使用'Interlocked'使'Count'實現''列表'線程安全? 'Count'屬性只是返回一個'int'字段,它是一個原子讀取。當然,計數返回給調用者的時候總是有可能已經陳舊,但是如果使用了「互鎖」的話,這種可能性就很大。 – LukeH 2011-03-31 13:50:56