最大的变化是.NET为基类库提供了多个与并行计算密切相关的类,并将它们统一称之为“并行扩展(Parallel Extensions)”。
NET 4.0“并行扩展”的主要包括以下几个部分:
1 并行语言集成查询(PLINQ,Parallel Language Integrated Query),这是.NET 3.0引入的LINQ to Object(本书第24章介绍)的换代“产品”,让查询操作可以并行执行。
2 任务并行库(TPL,Task Parallel Library):将开发并行程序的抽象级别从“线程(thread)”提升到“任务(Task)”,只需规定好计算机要执行的任务,然后由.NET去管理线程的创建和同步等问题。
3 同步的数据结构(CDS,Coordination Data Structures):包括一组线程安全的常用数据结构,比如线程安全的队列、堆栈等,在并行程序中访问这些数据结构,可以不需要显式地使用lock。
4 任务调度器(Task Scheduler):负责任务的创建、执行、暂停等管理工作。
5 线程池:.NET 4.0对原有的托管线程池功能进行了大幅度的增强,通过给其集成一个任务调度器,线程池中的线程可以高效地并行执行各种任务。
上述五个组成部分当中,PLINQ是建立在TPL之上的,而Task Scheduler是并行计算的核心,是一个Runtime,它与线程池相集成,负责将任务分派给线程池中的各个线程执行。