例如,在ConcurrentDictionary類中有幾種擴展方法,因爲它實現了IEnumerable接口。這些方法(例如First,Sum,Take等)是否本質上是線程安全的?System.Collections.Concurrent集合上的擴展方法是線程安全的?
2
A
回答
3
擴展方法不會添加或刪除任何線程安全性。但是你無法真正忽略迭代集合從來就不是線程安全的,無論你是明確地執行還是讓Linq執行它。您必須確保沒有其他線程可以同時修改集合。
請注意,在Linq中這是非常棘手的,因爲它的延遲執行行爲。
0
的LINQ到對象擴展方法爲靜態方法來實現對System.Linq.Enumerable
和MSDN指出他們都是線程安全的:
任何
public static
(Shared
在Visual Basic)此類型的成員是 線程安全
如果您在線程安全參數(which ConcurrentDictionary
is)中使用它們,則不應該有任何問題。
-2
現在您可以使用.NET 4.0中介紹的線程安全的高級Concurrent集合。 這真是太棒了。 無需管理鎖或任何東西。
相關問題
- 1. 線程安全的IQueryable擴展方法
- 2. EF6的DbContext擴展方法,線程安全
- 3. 這個擴展方法是否安全?
- 4. 這是通用的擴展方法線程安全的日誌記錄?
- 5. 在擴展方法中使用'yield'運算符是線程安全的嗎?
- 6. 存儲在線程安全集合線程中的對象是否安全?
- 7. 線程安全的方法
- 8. 是靜態方法線程安全的
- 9. Spring&Tika集成:我的方法是線程安全的嗎?
- 10. PHP Intl擴展線程安全嗎?
- 11. 線程安全的找到並集合
- 12. .NET中的線程安全集合
- 13. 鏈接線程安全集合線程安全嗎?
- 14. 線程安全的通用擴展方法使用語法問題
- 15. Python C擴展不是線程安全的嗎?
- 16. 以線程安全的方式獲取集合的內容
- 17. Ruby類方法是否線程安全?
- 18. 是靜態方法線程安全
- 19. IEnumerable Linq方法是否線程安全?
- 20. 正在讀取使用c#擴展方法線程安全的XElement值?
- 21. Java方法線程安全
- 22. 線程安全方法?
- 23. 鉻擴展是否安全?
- 24. 成員集合迭代線程安全
- 25. 線程安全地更新Scala集合
- 26. 線程安全訪問靜態集合
- 27. Scala - 可變線程安全集合
- 28. 休眠線程安全集合
- 29. 擴展方法和新發布的擴展程序集
- 30. 併發集合上通用參數的線程安全問題