0
などの名前空間のコレクションを使用している場合(ConcurrentDictionary<K, V>
など)、このオブジェクトのアクセスと変更を別のスレッドに行って、アクセスと変更でインターリーブする必要があります。System.Collections.Concurrentオブジェクトに対して複数の操作をアトミックに実行しますか?
どうすればよいですか?可能であれば、競合するスレッドがこれらの操作が行われているときにConcurrentDictionary
にアクセスしようとすると、非常に遅くなりますか?
ConcurrentDictionary<KType, VType> conDict = ...;
// How do I ensure that these operation are performed atomically?
VType myVInst;
conDict.TryRemove(2, out myVInst);
conDict.AddOrUpdate(1, new VType(), (x, y) => y);