私は辞書がadd
とmodify
の操作しかサポートしておらず、同時に操作することができますが、は常に異なるキーです。キーはintで、値は参照型です。また、modifyは値のいくつかのプロパティを変更することを意味します。C#辞書並行追加または異なるキーのみの変更、ConcurrentDictionaryが必要ですか?
私の質問は以下のとおりです。
- は、私は、このシナリオでConcurrentDictionaryを使用する必要がありますか?必要に応じて、どのように役立ちますか?
- ConcurrentDictionaryは、同じキーで同時実行が可能な場合、スレッドの安全性を保証しますか?私の理解はノー、正しい?
ありがとう!
1.はい、それを使用する必要があります。 ["これらの操作はすべて、アトミックであり、ConcurrentDictionaryクラスの他のすべての操作に関してスレッドセーフです。唯一の例外は、デリゲート、つまりAddOrUpdateとGetOrAddを受け入れるメソッドです。 (https://msdn.microsoft.com/en-us/library/dd287191(v=vs.110).aspx#Anchor_7)「私には声をかけてください」タグが必要です。 –
これらの操作が有効かどうかに関して、それぞれのタイプのドキュメントを見たときに、あなたは何を見つけましたか?あなたが見つけた情報は、これらの質問にどのように答えなかったのですか? – Servy
@EdPlunkettありがとうございます。ドキュメントやその他のSOの回答を読んで、私は最初の質問のためにそれを得ると思います。はい、コンカレントバージョンを使用する必要があります。同時追加すると、dictがサイズ変更される可能性があり、それによって問題が発生するためです。しかし、2番目の質問については、私はまだそれほど明確ではありません。私は、同時バージョンを使用することすら考えています。同時に値のプロパティを変更すると、値をロックする必要があります。本当?ありがとう! – Student222