2017-11-23 12 views
1

ロックとスレッドセーフなコレクションを使用するのはいつ並行辞書が好きですか?いくつかの説明とシナリオを入力してください。lockキーワードとスレッドセーフなコレクションを使用する場合

+1

次のいずれかのシナリオがある場合 - のいずれかa)1つを**そして**複数のスレッドをコレクションに書き込むスレッドや、複数のスレッドをコレクションに書き込むスレッドがある場合は、 'lock'かスレッドセーフなコレクションのどちらかを使う必要があります。 – mjwills

+0

も参照してください。https://docs.microsoft.com/en-us/dotnet/standard/collections/thread-safe/when-to-use-a-thread-safe-collection – mjwills

答えて

0

ConcurrentDictionaryは がに追加したり、辞書にデータを更新し、きめの細かいロックを使用していますが、それは完全に ロックフリー読み取り操作のためです。この方法では、 のシナリオでは、辞書からの読み込みが最も頻繁な の操作に最適化されています。

https://blogs.msdn.microsoft.com/pfxteam/2010/01/26/faq-are-all-of-the-new-concurrent-collections-lock-free/

ロックは必要ありませんが、あなたは適切に同時コレクションを使用する必要があります。GetOrAdd()またはTryAdd()メソッドで

+0

@mjwills、1つのスレッドアーキテクチャのcまたはパフォーマンス要件 –

+0

'しかし、あなたはコンカレントコレクションを正しく使用する必要があります.' - それはどういう意味ですか? – mjwills

関連する問題