タスク スティーリングスケジューラーの代わりに、スケジューラータスク委任スケジューラーを実装しました 。したがって、このメソッドの基本的な考え方は、各スレッドが独自のプライベート ローカル キューを持っているということです。タスクが生成されるたびに、タスクがローカル キューにエンキューされる前に、キュー間で検索操作が実行され、キューの各サイズを比較して最小サイズのキューが検出されます。この最小サイズのキューがタスクのエンキューに使用されるたびに。これは、ビジー状態のスレッドのキューから作業のプレッシャーをそらし、最もビジーでないスレッドのキューにジョブを委譲する方法です。
このスケジューリング手法の問題点は、各タスクが完了するまでにかかる時間が分からないことです。すなわち。キューのカウントが最小であっても、タスクはまだ動作している可能性があります。一方、キューのカウンターの値が高くても、タスクはすぐに完了する可能性があります。この問題を解決するためのアイデアはありますか?
私は、マルチレート同期データ フロー パラダイムを実装する独自のマルチスレッド ライブラリで、Linux、C++ プログラミング言語に取り組んでいます。