更具體地說,如果在構建新列表的過程中,用於初始化列表的IEnumerable被修改,那麼List(T)(IEnumerable(T))是線程安全的嗎?是列表<T>構造函數線程安全嗎?
3
A
回答
6
這與List構造函數是線程安全無關,它只取決於IEnumerable是否線程安全。
構造函數不是線程安全的,但在這種情況下這不是問題。構造函數沒有做任何有損線程安全的事情,IEnumerable的線程安全性可能是一個問題。
1
這並不是真的取決於正在構建的列表,而是由迭代的特定IEnumerable<T>
決定。是這個線程安全嗎?如果它不支持併發迭代和編輯,那麼預計會發生異常(或更糟糕:不可預知的結果)。大多數.NET迭代器都不會這樣; 4.0引入了更多的併發集合,或者你可以編寫自己的集合。
如果列表成功createD(迭代源),然後一旦構造原點沒有影響 - 兩者斷開連接。
相關問題
- 1. 是List <T>(列表<T>)構造函數線程安全嗎?
- 2. 是否列表<BlockingCollection <T>>線程安全嗎?
- 3. 列表線程安全嗎?
- 4. 同步Set線程的構造函數 - 副本是否安全?
- 5. python的「in」語言是否構造線程安全的列表?
- 6. 是列表<T> .AddRange()線程安全嗎?
- 7. C++ 11的std線程安全::原子<T>拷貝構造函數
- 8. 列表<T>線程安全
- 9. 安全__attribute __((構造函數))函數類
- 10. Java反射中的構造函數類的線程安全
- 11. 爪哇 - ArrayList的構造函數的線程安全
- 12. 線程安全靜態類和構造函數
- 13. 是列表<T>()。計數線程安全的?
- 14. 列表複製線程安全嗎?
- 15. 此列表<T>屬性線程安全嗎?
- 16. C++ G ++線程安全構造
- 17. 是java.sql.Connection線程安全嗎?
- 18. 是CreateChildContainer()線程安全嗎?
- 19. 是Thread.getStackTrace()線程安全嗎?
- 20. 是DocumentBuilder.parse()線程安全嗎?
- 21. 是javax.sql.DataSource線程安全嗎?
- 22. 是TcpClient.Available線程安全嗎?
- 23. 是sqlite.swift線程安全嗎?
- 24. 是winsock2線程安全嗎?
- 25. 是unique_ptr線程安全嗎?
- 26. 是SplittableRandom.split()線程安全嗎?
- 27. 線程安全(是嗎?)
- 28. 是IP2Location線程安全嗎?
- 29. 是System.DirectoryServices.AccountManagement.GroupPrincipal線程安全嗎?
- 30. 是Microsoft.Practices.EnterpriseLibrary.Data.Database.SetParameterValue線程安全嗎?
有特殊情況,但大多數構造函數自然是「線程安全的」。這是因爲在構造函數返回之前,其他線程通常無法獲得對該對象的引用。這個答案完全正確,它取決於具體的IEnumerable實現。 –
2010-02-28 22:42:01
好吧我懷疑是這樣的情況,但我不太確定,因爲我做了一些性能比較列表(IEnumerable )和列表 .AddRange(IEnumerable )和前者似乎表現好於後者。感謝您的快速回答! –
scim
2010-02-28 23:11:38