14 第十四章 写并行函数式程序

728 篇文章 1 订阅
26 篇文章 0 订阅
14 第十四章 写并行函数式程序



本章介绍

■ 用不可变数据简化并行化(parallelization)

■ 处理任务并行库(Task Parallel library)

■ 用 LINQ 以声明方式表达并行度(parallelism)

■ 实现重载(overloaded)运算符



    我们已经看到,许多赞成函数式编程的论据。原因之一就是,并行度现在变得越来越重要。写可以适应大量核心的代码,与使用典型的命令式方法相比较,以函数风格容易得多的。

    来自函数世界的两个概念是本质,并行计算是声明性的编程风格,使用不可变的数据结构,这两者密切相关。当使用不可变的数据时,代码变得更具声明性,因为,这样的代码更关心预期的计算结果,而不是复制和改变数据的细节。两个概念都很重要,是以不同的方式达到并行化。

    声明风格可以让大部分使用集合的代码的并行很简单,因为,声明风格不指定代码如何运行。这意味着,我们花很小的工作量,用并行执行替换顺序执行。不可变的数据结构和无副作用的函数是重要的,因为当代码不包含副作用的时候,我们可以轻松地确定哪些代码不相互依赖。一旦我们做到了这一点,就可以使用基于任务的并行度以并行的方式运行代码段。C# 和 F# 还都可以使用可变的数据类型。第 10 章,我们学习过可以隐藏这种可变状态,使整个程序成为函数式。在某些情况下,例如,当以某种方式处理数组时,这种隐藏命令隔离的代码,也可以很容易并行化。

    你可以看到有很多需要探索。我们首先简要概述演示所有这些技术,并解释每一个的用途。之后,看两个更复杂的示例应用程序,展示并行的函数式编程如何适合大的规模。无法在一章中容纳代码的两个完整的实际示例的代码,所以,在本书中,我们会忽略了一些意义不大的细节。我们会特别关注架构方面,和直接与并行相关的领域。从本书的网站可以获取完整源的代码,其中补充了缺少的部分。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值