TPL 按顺序执行代码

本文关键字:代码 执行 顺序 TPL | 更新日期: 2023-09-27 18:36:50

我在MSDN中读到,不能保证TPL(任务并行库)将并行运行逻辑/代码。所以我的问题是,在什么情况下代码将按顺序运行。?

当代码部署到单核处理器中时?或者当 .Net 框架线程池匮乏发生时?或者当"硬件线程"/"逻辑内核"太忙而无法在此时只分配一个"硬件线程"/"逻辑内核"时?

TPL 按顺序执行代码

它由 TPL 方法的 ParallelOptions 中设置的 TaskScheduler 决定。这使您可以轻松地将任务计划程序替换为自定义计划程序,该自定义程序可以执行所需的任何计划。

TPL 和 PLINQ 使用的默认调度程序是 ThreadPool。它将首先使用一个线程,然后添加更多线程,因为它的算法检测到更多线程是有用的(但是,如果您的任务不受 CPU 限制,算法可能会做出一些不正确的假设并给您带来问题)。

我强烈建议您阅读免费书籍《并行编程模式》,它对此进行了一些详细介绍。然而,我读过的关于任务调度程序如何工作的最好的书是 C# 专业并行编程(第 8 章是关于线程池的)。

我还建议您使用 .NET 框架下载并行编程示例包,它里面有一大堆注释良好的项目,有助于解释并行编程的许多概念。