C# 中的单个任务是否会在多核系统上并行执行
本文关键字:多核 系统 并行执行 是否 单个 任务 | 更新日期: 2023-09-27 18:33:29
我只是在C#中寻找并行编程的方法,并理解内核和真正的并行编程的重要性。
但我仍然有一个问题:
假设我有一个长时间运行的任务,这是否意味着将使用线程池中的线程和不同内核中的线程执行,以实现真正的并行编程。
还是取决于传递给任务的实际委托?
我希望我的问题很清楚。
委托本身没有区别。重要的是TaskScheduler
。
默认TaskScheduler
将通过 ThreadPool
运行它们。 要让它们同步运行,您需要传入当前正在使用的TaskScheduler
实例,例如静态TaskScheduler.FromCurrentSynchronizationContext
。
真正的并行编程需要多个内核,因为线程必须在单独的线程上执行才能真正并行运行。在单核系统中,您只能实现假并行性,因为不同的踏板必须通过分配的时隙共享核心。当当前线程在单核上运行时,其他踏板正在等待。