問題タブ [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.

0 投票する
7 に答える
71338 参照

.net - .NET-辞書のロックとConcurrentDictionary

型に関する情報が足りなかったConcurrentDictionaryので、ここで聞いてみようと思いました。

現在、私はを使用してDictionary、複数のスレッドによって常にアクセスされるすべてのユーザーを保持し(スレッドプールから、正確なスレッド数はありません)、同期アクセスを持っています。

私は最近、.NET 4.0に一連のスレッドセーフなコレクションがあることを知りましたが、それは非常に喜ばしいようです。Dictionary同期アクセスを使用する通常のオプションと、ConcurrentDictionaryすでにスレッドセーフなオプションのどちらかを選択できるので、「より効率的で管理しやすい」オプションは何でしょうか。

.NET4.0への参照ConcurrentDictionary

0 投票する
4 に答える
29603 参照

c# - ConcurrentDictionary を Dictionary に変換するにはどうすればよいですか?

Dictionary オブジェクトに設定したい ConcurrentDictionary オブジェクトがあります。

それらの間でのキャストは許可されていません。では、どうすればいいですか?

0 投票する
3 に答える
2939 参照

c# - 非静的クラスの静的オブジェクトへの複数スレッド アクセス

デフォルトでは、非静的メソッドは、複数のスレッドを介してアクセスされる場合、スレッドごとに変数の独自のインスタンスを持っているため、パブリック変数などが含まれていない場合はスレッド セーフになります。

一方、静的メソッドの変数はスレッド間で共有され、デフォルトでは非スレッド セーフになります。

たとえば、静的変数やメソッドをまったく持たないクラスがあるとします。

しかし、このクラスから静的オブジェクトを作成します。

そして、複数のスレッドで objProfile にアクセスします。

問題は、プロファイル クラスのメソッド、AddToCache、RemoveFromCache、および DoSomethingThatShouldBeThreadSafe が、objProfile を介して使用されたときにスレッド セーフになるかどうかです。クラスのインスタンス全体が静的であるため、変数が静的でなくても、それらの変数はスレッド間で共有されますか?

0 投票する
1 に答える
406 参照

c# - ConcurrentDictionary および互いに素なキーのセット

3 つのスレッドがあります。それらのそれぞれは、独自の辞書キーのセットで動作 (読み取り、書き込み) します。したがって、キーは異なるスレッドに対して相互に排他的です。データの読み取りのみを行う複数のスレッドもあります。

次の 2 つのアプローチのどちらが速度の点でより効率的ですか。

  1. (ConcurrentDictionary 型の) 単一の辞書を作成する
  2. これら 3 つのスレッドのそれぞれに対して、(ConcurrentDictionary 型の) 個別の辞書を作成します。

一見すると、ライターの競合がないため、2 番目のアプローチの方が効率的です。ここに落とし穴はありますか?2 つのアプローチの違いが重要でない場合は、最初のアプローチを使用します。

0 投票する
1 に答える
609 参照

c# - select from Dictionary は値を見つけますが、select from ConcurrentDictionary は値を見つけません

今日、私は ConcurrentDictionary と Dictionary でいくつかのテストを行っていました:

上記のエンティティを使用して、ConcurrentDictionary と Dictionary を作成して入力し、以下のコードを試しました。

最初のものは値を返しますが、2番目のものはそうではありません。何が間違っていますか?

これは、値を追加するために使用されるコードです。

0 投票する
2 に答える
1280 参照

c# - ConcurrentDictionary - 壊れた辞書または悪いコード?

さて、奇妙な小さな問題に直面しており、率直に言って、アイデアがありません。私はこれをそこに捨てて、何か間違ったことを見逃していないか、または ConcurrentDictionary が正しく機能していないかどうかを確認したかったのです。コードは次のとおりです。

(キャッシュは、静的な ConcurrentDictionary キーを含むクラスです)

問題は、 が であることtmpがありnullTryRemove行が実行されることがありますが、return null;上記の行は決してヒットしません。それが辞書にreturn null入れられる唯一のものであり、決して実行されないので、どうしてそうなるでしょうか?nulltmpnull


Cache クラスを含めます (このコードでは SetNames を使用しません):

0 投票する
1 に答える
2021 参照

c# - Where is ConcurrentDictionary in Reactive Extensions .NET 3.5

My questions is simple. After heavy googling I have learned that I can use ConcurrentDictionary in .NET 3.5 projects using Reactive Extensions and System.Threading.dll version from its install directory. First of all there is no System.Threading.dll, there is only System.Reactive.Windows.Threading in Reactive Extensions .NET 3.5 subdirectory. Adding reference to System.Reactive or System.Reactive.Windows.Threading or to any other from the mentioned .NET 3.5 doesn't give me ConcurrentDictionary class nor it gives me System.Collections.Concurrent namespace. I have downloaded older version of Reactive Extensions SDK and I have found what I have been looking for but my question is: does anybody know what happened to the ConcurrentDictionary backport in actual release of Reactive Extensions, does anybody know where it is or why it is missing. I was not able to find a reasonable answer or any answer at all.

0 投票する
2 に答える
5671 参照

c# - ConcurrentDictionary および Clear() 関数。データ損失なしで値をスレッドセーフにエクスポートする

値がリスト ex にエクスポートされ、その辞書がクリアされた後に ConcurrentDictionary をスレッドセーフにするアイデア。エクスポートとクリアの間に他のスレッドがデータを追加できないようにします。

このような: "

" そして、関数 _changedItems.AddOrUpdate を使用して他のスレッドによって追加が行われます

行をクリアする前にスレッドがデータオブジェクトをコレクションに追加すると、ディクショナリからデータを取得してからコンテンツをクリアするまでの間に、新しいデータが失われる可能性があります。

または、ロック内で追加とクリアを行う唯一の方法です。

ディクショナリからクリアされたすべてのアイテムを安全に返す Clear 関数が必要です。

-ラリー

0 投票する
1 に答える
77 参照

visibility - ConcurrentDictionaryと可視性

ConcurrentDictionaryは書き込み時にのみロックされるため、読み取りはロックフリーであることを読みました。

http://blogs.msdn.com/b/pfxteam/archive/2010/01/08/9945809.aspx 辞書の読み取りはロックフリーの方法で実行されます

しかし、可視性についてはどうでしょうか。読み取りがロックフリーの場合、どのようにしてこれを保証するのでしょうか。

0 投票する
2 に答える
2944 参照

c# - 述語による ConcurrentDictionary AddOrUpdate

私は持っていConcurrentDictionaryます。AddOrUpdateそのメソッドを使用してアイテムを操作します。

私の質問は:AddOrUpdateの update パラメータを使用して if ステートメントを含めることは可能ですか? たとえば、 myConcurrentDictionaryには、文字列 Id と DateTime Date プロパティを持つオブジェクトが含まれています。

したい - 指定された Id を持つオブジェクトが存在しない場合は、新しいオブジェクトを追加します - 新しいオブジェクトの日付が既存のものと等しいか大きい場合は更新し、小さい場合は更新します何でもする。

私の例では:

私は変わらなければならない