C# 中的单个任务是否会在多核系统上并行执行

本文关键字:多核 系统 并行执行 是否 单个 任务 | 更新日期: 2023-09-27 18:33:29

我只是在C#中寻找并行编程的方法,并理解内核和真正的并行编程的重要性。

但我仍然有一个问题:

假设我有一个长时间运行的任务,这是否意味着将使用线程池中的线程和不同内核中的线程执行,以实现真正的并行编程。

还是取决于传递给任务的实际委托?

我希望我的问题很清楚。

C# 中的单个任务是否会在多核系统上并行执行

委托本身没有区别。重要的是TaskScheduler

默认TaskScheduler将通过 ThreadPool 运行它们。 要让它们同步运行,您需要传入当前正在使用的TaskScheduler实例,例如静态TaskScheduler.FromCurrentSynchronizationContext

真正的并行编程需要多个内核,因为线程必须在单独的线程上执行才能真正并行运行。在单核系统中,您只能实现假并行性,因为不同的踏板必须通过分配的时隙共享核心。当当前线程在单核上运行时,其他踏板正在等待。