Parallel Extensions 的演变与主要功能
最初,Parallel Extensions 被称为 PLINQ(Parallel LINQ),主要功能是作为一个 LINQ 提供者,能够自动并行化查询。然而,随着时间的推移,其范围已经显著扩展。
主要变化
- 不再局限于查询:
Parallel Extensions 不再仅限于查询操作。由于某些算法无法通过 LINQ 自然表达,因此引入了一组命令式数据并行 API。 - Parallel For 语法:
提供了一种依赖于匿名函数的 Parallel For 语法。然而,对于不支持多行匿名函数的语言(如 VB),这种语法的使用不够简洁。 - Threading.Tasks 命名空间:
该命名空间支持高级任务管理器,用于调度操作。与当前使用的线程池不同,任务之间可以相互关联。这使得取消一个任务时,其所有子任务也会自动取消。更多关于任务和任务管理器的信息可以在 Parallel Programming with .NET 博客中查阅。
尚未实现的功能
Parallel Extensions 中仍有一些广受期待的功能尚未实现。Joe Duffy 列出了一些包括:
- 可验证的线程安全性:
确保代码在多线程环境中的安全性。 - 自动并行化:
自动识别并并行化代码中的可并行部分。 - 图形处理器的通用用途:
正在考虑将图形处理器用于通用计算任务,相关研究可以在 Microsoft Research 中找到。
技术要求
Parallel Extensions 的 CTP(Community Technology Preview) 需要 .NET 3.5 的支持。
总结
Parallel Extensions 从最初的 PLINQ 发展为功能更全面的并行编程工具,不仅支持查询并行化,还引入了命令式数据并行 API 和高级任务管理功能。尽管一些重要功能尚未实现,但其在并行编程领域的潜力巨大。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。