更具體地說,如果在構建新列表的過程中,用於初始化列表的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. 是列表<T> .AddRange()線程安全嗎?
- 5. 列表<T>線程安全
- 6. Java反射中的構造函數類的線程安全
- 7. 爪哇 - ArrayList的構造函數的線程安全
- 8. 此列表<T>屬性線程安全嗎?
- 9. C++ G ++線程安全構造
- 10. 是DatagramSocket.send線程安全嗎?
- 11. 是TcpClient.Available線程安全嗎?
- 12. 線程安全(是嗎?)
- 13. 是unique_ptr線程安全嗎?
- 14. 是System.DirectoryServices.AccountManagement.GroupPrincipal線程安全嗎?
- 15. 是sqlite.swift線程安全嗎?
- 16. 是DocumentBuilder.parse()線程安全嗎?
- 17. 是Microsoft.Practices.EnterpriseLibrary.Data.Database.SetParameterValue線程安全嗎?
- 18. 是長線程安全嗎?
- 19. 是javax.sql.DataSource線程安全嗎?
- 20. 是java.util.UUID線程安全嗎?
- 21. 是否是setlocale線程安全函數?
- 22. 列表<String>的添加方法是線程安全還是不安全?
- 23. 在C++的函數參數中使用構造函數是安全的嗎?
- 24. python函數是線程安全嗎? (特別是這個?)
- 25. strtok函數線程安全
- 26. VB.NET線程安全列表?
- 27. java:是hashmap.put(key,function())中線程安全的函數嗎?
- 28. 在構造函數中使GWT asynccallback安全嗎?
- 29. 線程是否表示線程安全?
- 30. 使用「不安全」線程函數是否安全?
有特殊情況,但大多數構造函數自然是「線程安全的」。這是因爲在構造函數返回之前,其他線程通常無法獲得對該對象的引用。這個答案完全正確,它取決於具體的IEnumerable實現。 –
2010-02-28 22:42:01
好吧我懷疑是這樣的情況,但我不太確定,因爲我做了一些性能比較列表(IEnumerable )和列表 .AddRange(IEnumerable )和前者似乎表現好於後者。感謝您的快速回答! –
scim
2010-02-28 23:11:38