1

マルチスレッドで新しいスケジューリング手法を実装しようとしています。アイデアは、タスクがプログラムスレッドから作成されるたびに、ワーカースレッドを検索し、スレッドの中で最もビジーでないスレッドで作業する必要があるということです。

プログラミングの観点から、指定されたスレッドの中で動的に最も忙しいスレッドを見つける方法をいくつかのロジック(または)アイデアを提案できますか

私はC++プログラミング言語で働いています。

4

2 に答える 2

0

各スレッドで仕事をする主力機能があると思います。この関数が呼び出されるたびにインクリメントするスレッド ローカル変数を定義できます。この変数は、対応するスレッドについて、それが実行した作業量を示します。

次に、プログラム スレッドはこれらの値をチェックおよび比較してから、現在のタスクを選択されたスレッド (ワーク カウンターが最小のスレッド) にディスパッチします。

別の方法は、各スレッドの作業に費やされた時間/アイドル状態に費やされた時間の尺度を使用することです。作業時間は、スレッドの主力機能の開始と終了の間で考慮されますが、アイドル時間はもう 1 つです (作業時間の開始と終了ですべてを測定できます)。

とにかく、アイデアは、基本的に各ワークスレッドがどれだけ占有されているかを測定するということです。これはやや不正確ですが、より高度なソリューションには、基本的にスレッド ライブラリ/フレームワークの再作成が含まれます。

于 2013-01-03T16:02:23.620 に答える