0

重複の可能性:
IEnumerable Linq メソッドはスレッドセーフですか?

簡単な質問です。リストで Where,Single,SingleorDefault を使用すると、他のスレッドがリストにアクセス (読み取りだけでなく書き込みも) しているときに、例外の列挙中にコレクションが変更されますか?

c# 4.0 に並行リストがないのはなぜですか?

4

1 に答える 1

3

List<T>複数のスレッドから安全に読み取ることができますが、書き込みはまったくサポートされていません。そのため、変更を行わない限り、リストに対して複数の LINQ クエリを実行できます。ReaderWriterLockSlim書き込みが必要なときだけ書き込みロックを取得するために使用できます。

c# 4.0 に並行リストがないのはなぜですか?

List<T>順序付けと同じ保証を保ちながら、スレッドセーフ効率的な実装を作成するのは難しいと思います。.NET 4 の並行コレクションは効率的ですが、いくつかの保証 (.NET の場合の順序付けなど) が犠牲になりConcurrentBag<T>ます。

于 2012-11-23T09:03:11.530 に答える