Parallel Extensions 最初发布的时候叫做 PLINQ 或者 Parallel LINQ。当时它是一个 LINQ Provider,可以自动地将查询并行化。不过现在它的范围已经大大扩张了。
其中最重要的一个改变是不再局限于查询。他们认识到有些算法无法自然地用 LINQ 来表达,因此将会有一套强制式的数据并行 API。
例如,有一个用在匿名函数里头的 Parallel For 语法。不过对于 VB 用户来说,在不支持多行匿名函数的语言里,新语法看起来没那么清爽。另一个选择是 Threading.Tasks 命名空间。它为调度操作提供了一个高级的任务管理器。与现在的线程池不同,在这个管理器中任务可以和其他任务关联。因此取消一个任务就可以自动地取消该任务的全部子任务。在 Parallel Programming with .NET 博客上有更详细的介绍。
有些被强烈要求的特性还没出现在 Parallel Extensions 当中。 Joe Duffy 列出了其中的一些,包括可验证的线程安全(verifiable thread safety)以及自动化的并行性(automatic parallelism)。另一个考虑中的特性是使用图形处理器来完成通用的操作。
Parallel Extensions CTP 版要求.NET 3.5。
评论