我只是在 C# 中寻找并行编程的方法,并了解内核和真正的并行编程的重要性。
但我还有一个问题:
假设我有一个长时间运行的任务,这是否意味着这将使用线程池中的线程和不同内核中的线程执行,以实现真正的并行编程。
还是取决于传递给任务的实际委托?
我希望我的问题很清楚。
我只是在 C# 中寻找并行编程的方法,并了解内核和真正的并行编程的重要性。
但我还有一个问题:
假设我有一个长时间运行的任务,这是否意味着这将使用线程池中的线程和不同内核中的线程执行,以实现真正的并行编程。
还是取决于传递给任务的实际委托?
我希望我的问题很清楚。
代表本身没有区别。这是最TaskScheduler
重要的。
默认TaskScheduler
将通过ThreadPool
.. 运行它们以使它们同步运行,您将传入TaskScheduler
当前正在使用的实例 .. 例如 static TaskScheduler.FromCurrentSynchronizationContext
。
真正的并行编程需要多个内核,因为线程必须在单独的线程上执行才能真正并行运行。在单核系统中,您只能实现假并行,因为不同的线程必须通过分配的时隙共享内核。当前线程在单核上运行时,其他线程正在等待。