【问题标题】:Will a single task in C# be executed in parallel on a multi-core system? [closed]C# 中的单个任务会在多核系统上并行执行吗? [关闭]
【发布时间】:2013-10-02 13:13:25
【问题描述】:

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

但我还有一个问题:

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

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

我希望我的问题很清楚。

【问题讨论】:

标签: c# multithreading task-parallel-library


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多