9

D でスレッドとファイバーを試していますが、メイン スレッドが実行されているときに別の CPU でファイバーを実行できるかどうか疑問に思っていました。そうでない場合、スレッドではなくファイバーを使用する理由は何でしょうか。(実用的な例は大歓迎です)

しばらくしてから次のファイバーに切り替えるファイバーを使用した初期プログラムを作成しようとしました。ただし、CPU 使用率が 1 つの CPU だけにとどまっていることに気付きました。

D のドキュメントには次のように記載されています。

ファイバーが 1 つの特定のスレッドにバインドされている必要はないことに注意してください。むしろ、現在実行されていない限り、ファイバーはスレッド間を自由に通過できます。

これは、別の CPU を使用する場合、ファイバーを実行するためのスレッドを提供する必要があるということですか? だとしたら目的がわからない。

前もって感謝します!

4

1 に答える 1

8

ファイバーは協調的なマルチタスキングのための軽量メカニズムであり、作成者/呼び出し元と同じスレッドで実行されます。別の CPU でタスクを実行する必要がある場合は、スレッドを使用します。ファイバーの目的は、コルーチンなどのパターンを実装するための高速な協調コンテキスト スイッチングとメカニズムを提供することです。

于 2011-09-20T10:07:06.380 に答える