[解決済み] コンカレントディクショナリー 正しい使い方
2023-03-28 19:47:47
質問
コンカレント辞書の正しい使い方はこれでしょうか?
private ConcurrentDictionary<int,long> myDic = new ConcurrentDictionary<int,long>();
//Main thread at program startup
for(int i = 0; i < 4; i++)
{
myDic.Add(i, 0);
}
//Separate threads use this to update a value
myDic[InputID] = newLongValue;
私はロックなどをしておらず、複数のスレッドが同じことをしようとしていても、ただ辞書の値を更新しているだけです。
どのように解決するのですか?
スレッドセーフの意味によって異なります。
MSDNより - How to: ConcurrentDictionary へのアイテムの追加と削除 :
ConcurrentDictionary<TKey, TValue>
はマルチスレッドシナリオのために設計されています。コレクションに項目を追加したり削除したりするために、コード内でロックを使用する必要はありません。しかし、あるスレッドが値を取得し、別のスレッドが同じキーに新しい値を与えてすぐにコレクションを更新することは、常に可能です。
そのため、一貫性のない ビュー を得ることができます。
関連
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] C#でHashtableよりDictionaryが好まれる理由とは?
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み】Node.jsは内部でThreadsに依存しているのに、どうして本質的に高速なのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する