第十四章 并行函数程序

728 篇文章 1 订阅
349 篇文章 0 订阅

第十四章 并行函数程序

本章介绍

■ 用不可变数据简化并行化(parallelization)
■ 处理任务并行库(Task Parallel library)
■ 用 LINQ 以声明方式表达并行度(parallelism)
■ 实现重载(overloaded)运算符

赞成函数式编程的论据,我们已经看到许多。原因之一就是,并行度现在变得越来越重要。写可以适应大量核心的代码,与使用典型的命令式方法相比较,以函数风格容易得多的。
来自函数世界的两个概念是本质,并行计算是声明性的编程风格,使用不可变的数据结构,这两者密切相关。当使用不可变的数据时,代码变得更具声明性,因为,这样的代码更关心预期的计算结果,而不是复制和改变数据的细节。两个概念都很重要,是以不同的方式达到并行化。
使用声明风格,大部分代码可以很容易并行处理集合,因为声明风格不描述代码如何运行,这样,不费什么劲,就能用并行替换串行。不可变的数据结构和无副作用的函数是重要的,因为代码没有副作用,我们可以轻松地确定哪些代码不相互依赖。做到了这一点,就可以使用基于任务的并行度以并行方式运行代码段。C# 和 F# 都可以使用可变的数据类型,在第十章,我们学习过如何隐藏可变状态,使整个程序成为函数式。在某些情况下,例如,以某种方式处理数组,这种隐藏命令隔离的代码,也可以很容易实现并行化。
可以发现,值得研究的内容很多。我们首先简要演示所有这些技术,并解释每一个的用途。之后,看两个更复杂的示例应用程序,展示用并行函数式编程处理大规模应用。我们无法在一章中容纳两个完整的实际示例的代码,在书中,会省略一些意义不大的细节;我们会特别关注架构方面,直接与并行相关的领域。从本书的网站可以获取完整的源代码,其中补充了缺少的部分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值