にダブルチェック ロックを適用しても安全Dictionary
ですか?
TryGetValue
つまり、別のスレッドから他の「get/contains」メソッドを呼び出しても安全ですか? (他の get 以外のメソッドを呼び出さずに)。
updコレクションは N 人のリーダーと 1 人のライターにとって安全でしょうか? サイクル 10 のスレッドが、ダブルチェック ロックを使用してキー X で要素にアクセスしようとし、アクセスされた場合はそれを削除するとします。ある時点で、別のスレッドから (ロックを使用して) キー X を持つ要素を追加します。1 人の読者がこの要素を取得して削除する必要があると思います。
upd2、回答について、私の質問は混乱しています。実際に私は2つの質問をしました:
TryGetValue
異なるスレッドから他の「get/contains」メソッドを呼び出しても安全ですか? (他の get 以外のメソッドを呼び出さずに)。- コレクションは N 人のリーダーと 1 人のライターにとって安全でしょうか?
最初の質問の答えは「はい」で、2 番目の質問の答えは「いいえ」です。
そのため、安全な場合もあれば安全apply double-checked locking
でない場合もあります。コレクションに同時に書き込みを行っているかどうかによって異なります。