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

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

c# - キューに処理するものがあるときにバックグラウンド スレッドをトリガーする方法

ConcurrentQueueを使用して、複数のスレッドからのメッセージを保存しています。

キューに何かがあるときに自動的にトリガーされるバックグラウンド スレッドを作成するにはどうすればよいですか?

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

c# - ConcurrentQueue の項目が多すぎるとワーカー スレッドがブロックされる

これは奇妙なものです。キューが空にThread[]なるまで各アイテムを処理するワーカースレッドがありConcurrentQueue<string>、その時点で残りのプログラムが続行されます。

これは約 1500 アイテムまで機能し、その時点ですべてのスレッドがブロックされたままWaitSleepJoinになり、キュー内のアイテムはまったく処理されません。

コードをステップ実行しようとしましたが、スレッドがまだ作成され、開始され、生きているように見えますが、すぐにブロックされ、関連する機能が実行されません。

私は完全に混乱しているので、助けていただければ幸いです!

関連するコードのセクションは次のとおりです。

メイン スレッド セグメント:

ワーカー機能:

変換機能:

紛らわしい部分は、これがすべてキュー内のアイテム数を中心に展開しているように見えますが、オーバーフローはないようです。

更新: mbox を追加するとprocess.Start()、コードのセクションでフリーズし、エラーが発生せず、その時点を超えて続行されないことが示されます。

更新 2:UseShellExecute = falseコードが機能する場合。控えめに言っても、これは非常に混乱します。

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

multithreading - 複数のスレッドからのファイル書き込み。

私は、いくつかの計算を行い、ファイル File.txt に書き込む別のアプリケーション B を呼び出すアプリケーション A を持っています。A は複数のスレッドを介して B の複数のインスタンスを呼び出し、各インスタンスは同じファイル File.txt に書き込もうとします。複数のスレッドが同じファイルにアクセスしようとすると、ファイルアクセスがスローされますが、これは一般的です。

シングルトン クラスでコンカレント キューを使用するアプローチを試みたところ、B の各インスタンスがキューに追加され、このクラスの別のスレッドがキューから項目をデキューし、ファイル File.txt に書き込みます。キューは同期的にフェッチされ、書き込み操作は成功しました。これは正常に動作します。

キューにスレッドとアイテムが多すぎると、ファイルの書き込みは機能しますが、何らかの理由でキューがクラッシュしたり突然停止したりすると、ファイルに書き込まれるはずのすべての情報が失われます。

キューを使用せずに B からファイルを同期的に書き込むと、ファイルのロックをチェックする必要があるため遅くなりますが、B がすぐにファイルに書き込んだ後はデータが失われる可能性が低くなります。

このシナリオを処理するための最良のアプローチまたは設計は何ですか? ファイル書き込み完了後のレスポンスは不要です。ファイルの書き込みが完了するまで B を待たせることはできません。

非同期待機ファイルの書き込みはここで役に立ちますか?

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

c# - 並行キューのデキュー

私は並行キューを使用しており、作成アクションデリゲートによって複数のスレッドを介してキューからデータをデキューしています

そして、このアクションデリゲートを複数のスレッドに並行して呼び出します

SubscriptionResponseModel subsModel;複数のアクションで使用しているときに 1 つ知りたいのは、スレッドセーフですか?.