2010-11-19 59 views

回答

9

documentation

任何公共靜態此類型的成員(在Visual Basic中的Shared)是線程安全的 。任何實例成員不是 保證是線程安全的。

換句話說,不,add方法不是線程安全的。

+3

+1 - 閱讀文檔通常是一個好的開始。 – 2010-11-19 22:52:10

0

最近(痛苦的)經驗讓我認爲它是非常非常不安全的。

我分析了幾個轉儲文件,分別包含7.4 百萬和880萬多餘的不需要的XElement實例。盡我所能確定,當一些涉及操縱XElement的子節點的無害代碼(包括在某些情況下調用Add())被同時從兩個線程池線程調用時,它們被創建。

這是不是太奇怪 - 的XElement和相關的類使用鏈表狀結構來實現的,如果你爭我奪的鏈接引用了各種奇怪的結果隨之而來 - 循環,獨立的片段等