問題タブ [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# - キューに処理するものがあるときにバックグラウンド スレッドをトリガーする方法
ConcurrentQueueを使用して、複数のスレッドからのメッセージを保存しています。
キューに何かがあるときに自動的にトリガーされるバックグラウンド スレッドを作成するにはどうすればよいですか?
c# - ConcurrentQueue の項目が多すぎるとワーカー スレッドがブロックされる
これは奇妙なものです。キューが空にThread[]
なるまで各アイテムを処理するワーカースレッドがありConcurrentQueue<string>
、その時点で残りのプログラムが続行されます。
これは約 1500 アイテムまで機能し、その時点ですべてのスレッドがブロックされたままWaitSleepJoin
になり、キュー内のアイテムはまったく処理されません。
コードをステップ実行しようとしましたが、スレッドがまだ作成され、開始され、生きているように見えますが、すぐにブロックされ、関連する機能が実行されません。
私は完全に混乱しているので、助けていただければ幸いです!
関連するコードのセクションは次のとおりです。
メイン スレッド セグメント:
ワーカー機能:
変換機能:
紛らわしい部分は、これがすべてキュー内のアイテム数を中心に展開しているように見えますが、オーバーフローはないようです。
更新: mbox を追加するとprocess.Start()
、コードのセクションでフリーズし、エラーが発生せず、その時点を超えて続行されないことが示されます。
更新 2:UseShellExecute = false
コードが機能する場合。控えめに言っても、これは非常に混乱します。
multithreading - 複数のスレッドからのファイル書き込み。
私は、いくつかの計算を行い、ファイル File.txt に書き込む別のアプリケーション B を呼び出すアプリケーション A を持っています。A は複数のスレッドを介して B の複数のインスタンスを呼び出し、各インスタンスは同じファイル File.txt に書き込もうとします。複数のスレッドが同じファイルにアクセスしようとすると、ファイルアクセスがスローされますが、これは一般的です。
シングルトン クラスでコンカレント キューを使用するアプローチを試みたところ、B の各インスタンスがキューに追加され、このクラスの別のスレッドがキューから項目をデキューし、ファイル File.txt に書き込みます。キューは同期的にフェッチされ、書き込み操作は成功しました。これは正常に動作します。
キューにスレッドとアイテムが多すぎると、ファイルの書き込みは機能しますが、何らかの理由でキューがクラッシュしたり突然停止したりすると、ファイルに書き込まれるはずのすべての情報が失われます。
キューを使用せずに B からファイルを同期的に書き込むと、ファイルのロックをチェックする必要があるため遅くなりますが、B がすぐにファイルに書き込んだ後はデータが失われる可能性が低くなります。
このシナリオを処理するための最良のアプローチまたは設計は何ですか? ファイル書き込み完了後のレスポンスは不要です。ファイルの書き込みが完了するまで B を待たせることはできません。
非同期待機ファイルの書き込みはここで役に立ちますか?
c# - 並行キューのデキュー
私は並行キューを使用しており、作成アクションデリゲートによって複数のスレッドを介してキューからデータをデキューしています
そして、このアクションデリゲートを複数のスレッドに並行して呼び出します
SubscriptionResponseModel subsModel;
複数のアクションで使用しているときに 1 つ知りたいのは、スレッドセーフですか?.