0
私はスケーラビリティの高いアプリケーションを設計しています。共通のキューからタスクを取得して処理する多くの処理ノードがあります。ThreadPoolバックログのキューに入れられたアイテムの数を知る方法
私の考えは、タスクキューから読み込んだすべてのノードにスレッドを持ち、作業を開始するタスクを開始することです。
私の問題は、ノードの現在の負荷ではなく、タスクを作成するスレッドの速度だけに依存するため、すべてのノードで待ち行列に入れられたタスクの数を制限する方法です。 ThreadPoolのキューに入れられたアイテムの数を確認するにはどうすればよいですか? 私はどのようにして公平な仕事を分配できますか?
お時間をいただきありがとうございます。
[this](http://stackoverflow.com/questions/4410959/how-can-i-determine-the-number-of-items-in-threadpool-queue)を見てください – Zero
どういう意味ですか? 「ノードを処理する」とは?それらが単一の共有メモリシステム内の単なるプロセッサであれば、タスクパラレルライブラリのデフォルトのスケジューラに依存する必要があります。タスクスケジューラはこれらの問題をすべて処理します。 – Douglas
セマフォ/スリムを使用してください。タスクを開始する前にWait()を呼び出し、タスクが完了したらRelease()を呼び出します。コンストラクターには未許可のタスクの数が指定されています。 –