1.4.3.2 使用 PLINQ 的声明式并行
来源:互联网 发布:linux http代理服务器 编辑:程序博客网 时间:2024/05/16 10:14
1.4.3.2 使用 PLINQ 的声明式并行
声明式编程风格提供了另一种写并行程序的方法。我们知道,用声明式写代码,就是进行基元组成。在 LINQ 中,这些基元是查询运算符,比如 where 和 select。使用声明式风格,我们可以很容易替换基元的实现,PLINQ 就是这样做的:我们能够用并行的查询运算符替换标准查询运算符。
清单 1.9 是一个查询,更新虚拟游戏中的所有怪物,并删除上一步中死掉的怪物。[ 并行化的]改变非常简单,因此,我们可以用一个清单展示两个版本。
Listing 1.9 Parallelizing data processingcode using PLINQ (C#)
var updated =
from m in monsters
let nm = m.PerformStep()
where nm.IsAlive select nm;
var updated =
from m in monsters.AsParallel() [1]
let nm = m.PerformStep()
where nm.IsAlive select nm;
在右侧的并行版本中,我们所做的唯一改变是添加了调用 AsParallel 方法[1],这个调用改变了查询运行时的基元,并使整段代码得以并行。在第十二章,我们将会看到其工作原理,并讨论声明式计算,第十四章重点关注并行式程序设计。
你可能会想,我们在程序中并不常用 LINQ 查询。绝对正确,因为在命令式程序中,LINQ 查询很少用;但是,在函数程序中,大都使用声明式风格处理数据。在 C# 中,可以写查询表达式,而F# 则提供了高阶列表处理函数(我们将在第五章和第六章所看到)。这意味着,你读过本书以后,在处理数据的时候,就可以更多地使用声明式编程,这样,你的程序将更容易实现并行化。
我们已经介绍了两种方法,能够用来简化函数式编程的并行化,这也是函数式思想在今天非常受人关注的原因之一,在第十三章和第十四章,我们还要再讨论这个问题以及相关主题。
在开始讨论真正的函数式程序之前,我们需要了解一下 F# 这种语言,首先看一下经典的 Hello world 程序,以及 F# 中的工具。下面一节将简要介绍开发 F# 解决方案的典型过程。
- 1.4.3.2 使用 PLINQ 的声明式并行
- C# PLinq:声明式数据并行
- 并行开发3——plinq的使用
- C# 并行编程 之 PLINQ并行度的指定 和 ForAll的使用
- C# 并行编程 之 PLINQ 基本使用
- 8天玩转并行开发——第三天 plinq的使用
- 8天玩转并行开发——第三天 plinq的使用
- 并行编程(3):PLinq
- 【C#】61. 并行查询的异常处理 PLINQ Exception
- 并行编程与PLINQ-数据并行
- 并行编程与PLINQ-任务并行
- 建议84:使用PLINQ
- PLINQ
- Plinq
- PLinq
- .Net 3.5中使用PLinq
- C# 并行编程 之 PLINQ 规约操作和聚合函数
- C# 并行编程 之 PLINQ 执行MapReduce算法
- Looper,Handler,Message
- 名人博客阅读摘要二(Hash算法、HashSet、Bitmap、boomfilter)
- 使用矢量面裁剪栅格数据的对齐问题
- .h.gch文件是什么?
- JAVA书籍
- 1.4.3.2 使用 PLINQ 的声明式并行
- fjghkghkhjljkgfjhfgj
- 名人博客阅读摘要三:外部排序
- 僵尸进程,孤儿进程
- Arrays.asList()引起的java.lang.UnsupportedOperationException
- 140728暑期培训.txt
- map的用法
- LINUX下Socket编程 函数格式详解
- C语言测试:想成为嵌入式程序员应知道的0x10个基本问题