3

たとえば、ConcurrentDictionaryクラスには、IEnumerableインターフェイスを実装しているため、いくつかの拡張メソッドがあります。これらのメソッド(たとえば、First、Sum、Takeなど)は本質的にスレッドセーフですか?

4

3 に答える 3

3

拡張メソッドは、スレッドセーフを追加または削除しません。ただし、コレクションを反復処理することは、明示的に実行する場合でも、Linqに実行させる場合でも、スレッドセーフではないことを無視することはできません。他のスレッドが同時にコレクションを変更できないようにする必要があります。

Linqでは実行動作が遅れるため、これは非常に注意が必要です。

于 2012-05-09T14:08:29.580 に答える
0

Linq-To-Objects Extensionメソッドは、に静的メソッドとして実装されておりSystem.Linq.Enumerable、MSDNはそれらがすべてスレッドセーフであると述べています。

public staticこのタイプの(SharedVisual Basicの)メンバーはすべてスレッドセーフです

スレッドセーフパラメータ(ConcurrentDictionaryある)でそれらを使用している場合は、問題はありません。

于 2012-05-09T10:16:04.227 に答える
-1

これで、スレッドセーフな.Net4.0で導入された高度な並行コレクションを使用できます。これは本当に素晴らしいコンセプトです。ロックなどを管理する必要はありません。

于 2012-10-16T06:31:29.437 に答える