問題タブ [concurrentdictionary]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ConcurrentDictionary を更新する最も簡単な方法は何ですか?
ConcurrentDictionary を作成しましたが、その要素を更新する方法がわかりません。
ここで (注文に新しい要素を追加して) 更新する必要があります。TryUpdate を使用する必要があるようですが、非常に面倒で読みにくいようです。
誰か良い方法を教えてください。
c# - ディクショナリのレコードをロック - ConcurrentDictionary
静的ディクショナリを使用したマルチスレッド アプリケーション。これはリクエストの処理に使用され、各リクエストは 1 つのレコードのみにアクセスします。
リクエストの処理
- レコードを読む
- 値を計算するアルゴリズム
- 記録を更新します。
プロセス中に、特定のレコードをブロックする必要があります。
手がかりが見つかりません。誰か助けてください。
ConcurrentDictionary を使用できますか??
c# - valueFactory に副作用がある場合の ConcurrentDictionary.GetOrAdd
データベース内のテーブルに値を挿入して ID を取得するいくつかの非常に中心的な関数にキャッシュ レイヤーを導入することで、データベース サーバーから作業をオフロードしようとしています。これはマルチスレッド環境にあります。
私の最初のアプローチは次のとおりです。
これは役に立ちました。ただし、スレッドはまだお互いに多くのことを待ちます。この待ち時間を減らしたい。私の最初の考えは、を使用することConcurrentDictionary.GetOrAdd(key, valueFactory)
でした。valueFactory が複数回呼び出される可能性があるため、これは機能しません。
私はこのアプローチに行き着きました:
これを行うより良い方法はありますか?これもスレッドセーフですか?
c# - ConcurrentDictionary からの値の削除>
私は (できれば) スレッドセーフなデータ構造を書いています。これは本質的に HashSets の ConcurrentDictionary のラッパーです。
私がやりたいことは、次のようないくつかの方法を持つことです:
ConcurrentDictionary.AddOrUpdate(key, newValue, Func) に似たものが TryRemove に存在することを望んでいましたが、うまくいきませんでした。これらの Remove メソッドは両方とも、通常のディクショナリに対して非常に簡単に記述できますが、それらを同時に実行するとなると、途方に暮れます。誰かが私を正しい方向に向けますか?:)
c# - ConcurrentDictionary ContainsKey メソッドは同期されていますか?
簡単な質問私が持っていると仮定しますConcurrentDictionary
私が使用TryAdd
するContainsKey
方法
ここで、100 スレッドから処理を開始したとします。メソッドで新しいキーを追加しているときに3つのスレッドが別の3つのスレッドでメソッドTryAdd
でキーが存在するかどうかを尋ねると仮定しますContainsKey
ContainsKey
結果を返す前に、これらの 3 つのスレッドがプロセスを追加するのを待ちますか?
または、それらは同期されていません。つまり、これらの 3 つのスレッドのいずれかが、ContainsKey メソッドで要求しているキーを追加している可能性がありますが、プロセスがまだ完了していないため、取得しようとしていた答えは false になります。
答えは非常にTy C#WPF .net 4.5最新
c# - ContinueWith デリゲートは Task の完了前に実行されます
背景情報: 一度に 5 つの同時操作を処理できるシングルトン クラスを作成しようとしています。各操作は で表されSomeAsyncMethod
ます。
このメソッドは、シングルトン クラス内に存在します。
consumers
ですConcurrentDictionary<int,Task>
私の問題: 何らかの理由で、ContinueWith
デリゲートは の完了前に実行されSomeAsyncMethod
ます。これが起こっていることを知っている理由は、監視する別のメソッドがあるためですinstance.Consumers.Count
-カウントは実行0
前SomeAsyncMethod
です。
何故ですか?
c# - 3 つのスレッドで使用される C# ConcurrentDictionary
を使用するクラスがありますConcurrentDictionary
。
このクラスには、 this に対していくつかの操作を実行する 3 つの関数がありますConcurrentDictionnary
。
各関数は、異なるスレッドによって呼び出されます。
- 最初の関数操作: dictionnary.Where、dictionnary.TryRemove
- 2 番目の関数操作: dictionnary.Where
- 3 番目の関数操作: dictionnary.TryAdd
この最後の関数は、さまざまな時点でブロックされます。ブロックせずに要素を辞書に追加する必要がありますが、どうすればよいですか?
c# - スレッドセーフな ConcurrentDictionary コレクションの使用
私はスレッドセーフでないコレクション List を使用する関数を持っています。スレッドセーフにするために、lock-operator を使用します。
ロックフリーに変換したい。それを行うために、List コレクションの代わりにこの関数 ConcurrentDictionary コレクションで使用したので、関数は次のように見え始めます。
しかし、この関数では、エラーが発生し始めます(インデックスが範囲外です)。スレッドセーフコレクション(ConcurrentDictionary)を正しく使用するには? エラーを修正するにはどうすればよいですか?