在托管代码方面,任务并行库(Task Parallel Library)引入System.Threading.Tasks.Task类,以及Parallel.For和Parallel.ForEach来支持任务或数据并行。
此外值得一提的是PLINQ(Parallel Language-Integrated Query)。PLINQ作为LINQ的并行实现,对内存内的IEnumerable数据源进行分区,随后利用系统内的多核,并行在子数据源上操作。
无论是任务的组织、调度、执行,还是资源分配、内存共享,Visual C++ 2010为编写并发应用程序都给予了帮助,通过充分利用多核CPU性能来提升软件的性能,真正享受到亲自烹饪的性能大餐。
厨具-开发工具
子曰:“工欲善其事,必先利其器”。好的开发工具是成功的一半。在Visual Studio 2010里包含了两个新的调试器窗口和一个新的性能可视化剖析器(Profiler)。有了这两个调试器窗口,我们可以在代码同等的抽象层面上——也就是任务——进行调试,看到任务的状态,彼此之间的关系,调用堆栈等等。当然如果感兴趣的话,也可以看到任务对应的线程,并利用一个全局的统一视图来查看所有线程的调用堆栈,以及彼此之间的关系。
图4 并行堆栈窗口
图 5 并行任务窗口