C# 中的任务并行库 (TPL)17 Mar 2025 | 4 分钟阅读 在本文中,我们将讨论 C# 中的任务并行库及其实现。 引言任务并行库 (TPL) 在 C# 中是随 .NET Framework 4.0(及后续版本)引入的强大框架,旨在简化并发和并行代码开发。它通过提供用于开发并行和异步程序的高级接口,使开发人员更容易使用现代计算机系统中常见的多核处理器。开发人员可以通过使用 TPL 专注于表达系统中固有的并行性和并发性特征,从而抽象出维护线程和同步原语的复杂性。 ![]() 任务是 TPL 的基础,因为它们是可以同时完成的工作单元。TPL 的底层架构管理和控制这些任务,动态地从 ThreadPool 分配和监督线程,以确保高效的任务执行。 有几种生成任务的方法:我们可以直接使用 Task 类,使用并行循环 (Parallel.ForEach, Parallel.For),或者使用更高级的构造(用于异步编程),例如 async/await。 TPL 提供了一整套功能和 API,用于编程应用程序,包括并行和异步操作。这些功能包括任务取消、延续任务、任务聚合、用于 LINQ 查询并行化的并行 LINQ (PLINQ) 以及对数据并行化提供支持的并行集合。TPL 与 .NET 中各种其他异步编程模型(包括异步处理模型 (APM) 和基于事件的异步模式 (EAP))的无缝集成,为 C# 中的异步编程提供了一种统一的方法。 程序让我们以一个例子来说明 C# 中任务并行库 (TPL) 的实现。 输出 Task 1 started. Task 2 started. Task 3 started. Task 1 completed. Task 3 completed. Task 2 completed. All tasks completed. 说明 上述代码是演示如何使用 C# 强大的任务并行库 (TPL)(一个用于同步编程的框架)的示例。首先需要导入 System 和 System.namespaces。此技术通过异步执行由 Lambda 表达式表示的给定操作,实现各种工作单元的并行执行。因此,每个作业都可以利用 TPL 固有的线程框架同时运行。 之后,使用 Task.WaitAll() 函数确保应用程序在每个操作完成运行之前不会开始运行。每个使用 DoWork 方法的作业都会导致一秒钟的线程休眠,以模拟工作。此休眠过程通过模拟繁重或计算挑战性的任务,为并行处理提供了示例场景。 在执行过程中,软件会报告每个操作的开始和结束,演示同时执行的并行活动。由于任务执行是异步的,因此应用程序可以充分利用多核计算机来提高整体效率并最大化 CPU 利用率。最终,软件会验证每个作业是否已完成,表明所有并发活动都已成功执行。 结论总而言之,C# 任务并行库 (TPL) 为异步编程和并行实现提供了坚实的基础,允许程序员充分利用多核处理器并增强应用程序性能。TPL 通过抽象化维护线程和同步原语的复杂过程,简化了并发程序的构建,并使其更容易在各种环境中利用并行性。 TPL 的主要特性之一是它能够通过将任务自动分散到可用的处理器核心中来有效地利用系统资源。应用程序可以实现更高的处理速度和并发级别,从而提高其响应能力和可伸缩性。此外,TPL 提供了细粒度任务调度管理方法,使开发人员能够根据硬件功能和应用程序需求最大限度地提高性能。 此外,开发人员可以使用 TPL 与 C# 中其他异步编程工具(例如异步方法和 async/await 关键字)的无缝集成,轻松创建可伸缩和响应迅速的应用程序。多种异步编程范式的协作使工程师能够设计可靠有效的软件解决方案,以满足现代计算环境中的需求。 总的来说,C# 任务并行库 (TPL) 是一个强大的工具,用于利用 .NET 应用程序中异步编程和并行性的优势。开发人员可以利用 TPL 来提高桌面、Web 或基于云的应用程序的性能、可伸缩性和响应能力。这最终将增强用户体验并最大限度地利用硬件资源。 |
我们请求您订阅我们的新闻通讯以获取最新更新。