33

ConcurrentDictionaryを使用している場合、を使用してループするときにロックする必要がありforeachますか?

4

1 に答える 1

51

ConcurrentDictionaryがある場合、foreachを使用してループするときにロックする必要がありますか?

いいえ。ドキュメントからConcurrentDictionary.GetEnumerator

ディクショナリから返された列挙子は、ディクショナリへの読み取りおよび書き込みと同時に安全に使用できますが、ディクショナリの瞬間的なスナップショットを表すものではありません。列挙子を介して公開されるコンテンツには、GetEnumeratorが呼び出された後にディクショナリに加えられた変更が含まれている場合があります。

それで問題がない限り、いかなる種類のロックも必要ありません。

于 2012-09-04T17:40:24.483 に答える