これは学術的な質問ですが、同時辞書.TryAdd失敗するのでしょうか? 失敗するとしたら、どのような場合で、その理由は?
ベストアンサー1
はい、可能です。条件は次のとおりです(msdnから):
- 引数NullException- キーがnull参照の場合
- オーバーフロー例外- 要素の最大数に達したとき
- 戻ってくる間違い同じキーを持つ要素がすでに存在する場合
繰り返しになりますが、これは同時実行性とは関係ありません。2 つのスレッドが同時にアイテムを挿入することを懸念する場合、次のことが発生する可能性があります。
- キーが異なっている場合は、両方のインサートが正常に機能します。
- 1 つの挿入は正常に動作して true を返しますが、もう 1 つの挿入は失敗し (例外なし)、false を返します。これは、2 つのスレッドが同じキーを持つアイテムを挿入しようとした場合に発生し、基本的に 1 つだけが勝ち、もう 1 つは負けます。