たとえば、ConcurrentDictionaryクラスにいくつかの拡張メソッドがあります。これはIEnumerableインターフェイスを実装しているためです。これらのメソッド(たとえば、First、Sum、Takeなど)は、本質的にスレッドセーフであるかどうかですか?System.Collections.Concurrentコレクションの拡張メソッドはスレッドセーフですか?
2
A
答えて
3
拡張メソッドはスレッドセーフを追加または削除しません。しかし、明示的に行っても、Linqにそれをさせても、コレクションを反復することは決してスレッドセーフではないことは、実際には無視できません。同時に他のスレッドがコレクションを変更できないようにする必要があります。
Linqでは実行が遅延するため、これは余計なことですので注意してください。
0
LINQのツーオブジェクトの拡張メソッドがSystem.Linq.Enumerable
の静的メソッドとして実装されており、MSDNは、彼らがすべてのスレッドセーフで述べている:
どれでもこのタイプのメンバー(Visual Basicでは
Shared
)public static
ある スレッド
スレッドセーフパラメータ(which ConcurrentDictionary
is)で使用している場合は、問題はありません。
-2
スレッドセーフである.Net 4.0で導入されている先進のコンカレントコレクションを使用できるようになりました。 これは本当に素晴らしいコンセプトです。 ロックなどを管理する必要はありません。
関連する問題
- 1. 拡張メソッドはスレッドセーフですか?
- 2. LINQメソッドは拡張メソッドですか?
- 3. 拡張メソッドは
- 4. 拡張メソッドは
- 5. オブジェクトと子コレクションの拡張?
- 6. LINQの拡張メソッド - GetYearWeekFormat拡張
- 7. VectorとHashtableはコレクションのスレッドセーフですか?
- 8. 汎用コレクションに拡張メソッドを作成する方法
- 9. Enumerable.Intersperseの拡張メソッドですか?
- 10. IsOrderedBy拡張メソッド
- 11. ジェネリック拡張メソッド
- 12. 拡張メソッド - デコレータパターン
- 13. MVC拡張メソッド
- 14. 拡張メソッド
- 15. は私の拡張メソッド
- 16. Rubyメソッドの拡張
- 17. 拡張メソッドのパートタイムバグ
- 18. スタティックオブジェクトの拡張メソッド
- 19. Dの拡張メソッド?
- 20. ユニットテストの拡張メソッド
- 21. LINQの拡張メソッド
- 22. SmtpClient.SendMailAsyncメソッドはスレッドセーフですか?
- 23. チェーンされたスレッドセーフなコレクションはスレッドセーフですか?
- 24. ニース、クリーンクロスは拡張メソッド
- 25. LINQ最大拡張メソッドは空のコレクションにエラーが発生します
- 26. 仮想拡張メソッド?
- 27. NhQueryable LINQ拡張メソッド?
- 28. 静的拡張メソッド
- 29. Javaのコレクションは、同等の拡張インターフェイスを拡張ジェネリッククラスを比較
- 30. 拡張コレクションをパラメータ化する方法