多线程编程入门指南
1. 多线程编程背景
在2004年之前,提升计算机性能主要依靠提高单个处理器的能力。然而,当前硅微芯片技术的物理限制阻碍了单处理器性能的进一步提升,计算能力与散热的阈值趋于稳定,甚至出现了性能平台期和小幅度的回落。
尽管如此,计算机性能仍在持续增长,多核处理器(单个处理器内的多个核心)和多处理器(插入主板的微芯片)已成为主流服务器、工作站甚至笔记本电脑的标配。例如,在支持超线程技术的四核计算机上,Windows任务管理器会显示八个处理器,这反映了计算机的可用性能。
虽然现在普通计算机通常配备多个处理单元或CPU,但目前讨论的许多程序一次仅使用其中一个CPU,因为这些程序是单线程的。为了充分利用计算机中多个处理单元的处理潜力,我们需要编写多线程代码,这涉及到System.Threading和System.Threading.Tasks命名空间,这些命名空间包含了操作线程的API。
2. .NET 4中的多线程API
.NET 4引入了两组新的多线程编程API:任务并行库(TPL)和并行LINQ(PLINQ)。尽管早期版本框架中的线程API仍然存在并得到完全支持,但未来的改进将主要围绕新的API进行。不过,对于针对早期框架的开发者来说,早期的API仍然很重要。
此外,微软发布了.NET的反应式扩展(Rx),这是一个单独的下载包,为.NET 3.5框架添加了对TPL和PLINQ的支持。因此,在提及.NET Framework 4引入的功能时,在引用Rx库的System.Threading.dll程序集的