スケジューリングの優先度を持つスレッド プールを構築する必要があります。実行中のすべてのスレッドは、CPU 時間と OS の優先度に関して同じ優先度を持ちますが、次に完了するタスクを選択する必要がある場合は、優先度が最も高いスレッドが最初に実行されます。
見栄えの良いスレッド プールがあるので、boost::asio を試すことにしました。asio ドキュメントの優先ハンドラーの例を見てきましたが、スレッドの数が制限されておらず、タスクを手動でスケジュールする必要があるため、好きではありません。必要なのは、キューからタスクを取得する固定数のスレッドです。これにより、アプリケーションで単一のプールを作成し、アプリケーションの有効期間中にいつでもタスクを追加できます。
タスクが終了したときに asio::io_service から通知を受け取るだけで十分です。その通知のハンドラーは、優先度が最も高い次のタスクを見つけてサービスに投稿できます。
それは可能ですか?