問題タブ [concurrent-queue]
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# - 使用方法: System.Collections.Concurrent
追加しようとしていますが、機能using System.Collections.Concurrent
していません。
タイプまたは名前空間名「Concurrent」が名前空間「System.Collections」に存在しません (アセンブリ参照がありませんか?)
c# - ConcurrentQueue .Net: マルチスレッド コンシューマ
の概念に関する非常に基本的な質問がありConcurrentQueue
ました。キューは FIFO です。複数のスレッドがアクセスを開始した場合、FIFO をどのように保証しますか? Apple
、Oranges
、Lemon
、Peach
およびApricot
- をこの順序で追加したとします。最初TryTake
は を返す必要がありApple
ます。しかし、複数のスレッドが独自のTryTake
リクエストを出し始めるとどうなるでしょうか? Lemon
別のスレッドが戻る前に、あるスレッドが戻る可能性はありませApple
んか? キューが空になるまで、他のアイテムも返されると想定しています。しかし、これらのリターンは FIFO の基本原則を支配するのでしょうか?
c# - ConcurrentQueue と Parallel.ForEach
ソースを取得する必要がある URL のリストを含む ConcurrentQueue があります。ConcurrentQueue オブジェクトを入力パラメーターとして Parallel.ForEach を使用すると、Pop メソッドは何も機能しません (文字列を返す必要があります)。
MaxDegreeOfParallelism を 4 に設定して Parallel を使用しています。私は本当に同時スレッドの数をブロックする必要があります。並列処理でキューを使用するのは冗長ですか?
前もって感謝します。
.net - キューからの読み取りと書き込み
同時キューに最大 300 個のビットマップのセットを保存しています。over-tcp ビデオ ストリーミング プログラムでこれを実行しています。サーバーの速度が低下した場合は、受信したビットマップをこのキューに保存します (バッファリング)。これをテストするために別のプロジェクトを作成しましたが、いくつか問題があります。
書き込みスレッドが動作している間 (キューへの書き込み)、画像ボックスはキューからの画像を表示していますが、それらの多くをスキップしているようです (書き込みスレッドによって「リスト」に追加されたばかりの画像を読み取っているようです)。 -FIFO 動作ではありません)。書き込みスレッドが画像ボックスを終了するとブロックされますが、キューから読み取るループはまだ機能しています (画像ボックスがブロックされている場合、キューは空ではありません)。
コードは次のとおりです。
エラーはありません。キューにコピーがあると思います (画像ボックスがフリーズしているように見えるため)。整数で同じコードを試してみましたが、完全に機能します。どうしたの?
vb.net - VB.Net: スレッドの ConcurrentQueue からアイテムを取得する
データをリッスンして文字列の ConcurrentQueue にプッシュする 1 つのスレッドで実行されているクラスがあります。Enqueue を使用してデータを追加していますが、キューの長さが増加していることがわかるので、データが正しくキューに入れられていることがわかります。
次に、別のスレッドで実行されている別のクラスが、FIFO ベースで各データを取り出す必要があります。ただし、それは単に何もしません。キューからデータを取り出すループは次のとおりです。
Count() を使用してキュー内のアイテム数を確認するだけでなく、IsEmpty も試しました。同じ結果!?
C# での ConcurrentQueue の使用に関する記事はかなりあるようですが、VB.Net の例が見つからないため、少し行き詰まっています。
ヘルプ !
更新: While ... End While を Do ... ループでラップすると機能しますが、何も起こっていないときにスレッドが拘束されるため、おそらくお勧めできません。これを行うためのよりエレガントな方法はありますか?
c# - 複数のタイプのキューイングとデキュー
COM サーバーによって毎秒数千回トリガーされるイベントがあり、取引所からのリアルタイムの価格情報を提供します。私のコードでは、このイベントにアクセスできます (C#):
受信データをできるだけ速く処理したいのは、交換で非常に忙しいとき、イベントの頻度がさらに高くなり、ストリームがスタックしているように見えて、イベントがトリガーされなくなることがあるためです。
それで、私のアイデアは何でしたか?ConcurrentQueue を使用してデータをキューに入れ、並行していくつかのワーカースレッドを実行して、アイテムをデキューしてそれらを処理したいと考えていました。
しかし、データ (最も重要な値である int SymbolNr、float Price、DateTime Time で構成される) を (ジェネリック) クラスのインスタンスにラップせずに ConcurrentQueue に一度にキューに入れることができないため、どういうわけか立ち往生しています。このアプローチは非常に時間がかかるように思われるため、おそらく 1 秒あたり最大 100.000 個のオブジェクトをインスタンス化することについて話しています。
私は正しいですか?この状況に対処するための最もパフォーマンスの高いアプローチは何ですか?