PLINQ 已作为并行扩展发布

Parallel Extensions 的演变与主要功能

最初,Parallel Extensions 被称为 PLINQ(Parallel LINQ),主要功能是作为一个 LINQ 提供者,能够自动并行化查询。然而,随着时间的推移,其范围已经显著扩展。

主要变化

  1. 不再局限于查询
    Parallel Extensions 不再仅限于查询操作。由于某些算法无法通过 LINQ 自然表达,因此引入了一组命令式数据并行 API。
  2. Parallel For 语法
    提供了一种依赖于匿名函数的 Parallel For 语法。然而,对于不支持多行匿名函数的语言(如 VB),这种语法的使用不够简洁。
  3. 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 和高级任务管理功能。尽管一些重要功能尚未实现,但其在并行编程领域的潜力巨大。

阅读 21
0 条评论