私はちょうど C# での並列プログラミングの方法を見つけており、コアと真の並列プログラミングの重要性を理解しています。
しかし、私はまだ質問があります:
長時間実行されるタスクがあるとします。これは、スレッド プールのスレッドを使用して、真の並列プログラミングのために異なるコアで実行されることを意味します。
それとも、タスクに渡される実際のデリゲートに依存しますか?
私の質問が明確であることを願っています。
私はちょうど C# での並列プログラミングの方法を見つけており、コアと真の並列プログラミングの重要性を理解しています。
しかし、私はまだ質問があります:
長時間実行されるタスクがあるとします。これは、スレッド プールのスレッドを使用して、真の並列プログラミングのために異なるコアで実行されることを意味します。
それとも、タスクに渡される実際のデリゲートに依存しますか?
私の質問が明確であることを願っています。
デリゲート自体には違いはありません。それはTaskScheduler
重要です。
デフォルトでTaskScheduler
は、それらを .. 経由で実行して同期的に実行します。現在使用されているインスタンスをThreadPool
渡します。TaskScheduler
TaskScheduler.FromCurrentSynchronizationContext
真の並列プログラミングには複数のコアが必要です。これは、スレッドが真に並列で実行されるためには別のスレッドで実行する必要があるためです。シングル コア システムでは、割り当てられたタイム スロットを通じて異なるトレッドがコアを共有する必要があるため、偽の並列処理しか実現できません。現在のスレッドがシングルコアで実行されている間、他のスレッドは待機しています。