借助Java、Go等多种语言的特长,深度剖析所有主流并发编程模型
基于锁和线程的并发模型是目前最常用的一种并发模型,但是并发编程模型不仅仅只有这一种,本书几乎涵盖了目前所有的并发编程模型。了解和熟悉各种并发编程模型,在解决并发问题时会有更多思路。
——方腾飞,并发编程网站长
当看到这本书的目录时,我就为之一振。它涉及了当今所有的主流并发编程模型(当然也包括Go语言及其实现的CSP模型)。而在品读之后,我更是有一些激动。其中的大部分章节都深入浅出地描述了某一个并发编程模型的概念、特点、机理以及适用领域。加之有大量相应实现语言的示例呈现,更是让这些模型活灵活现、极易理解。另外,各章之间的衔接会使你更容易把这些知识融会贯通。总之,并发编程乃现代编程技能的必备,而这本书则为并发编程的首选佳作。
——郝林(@特价萝卜),《Go并发编程实战》作者
几十年来,专业的程序员一直在用线程与锁模型来进行并行和并发,但这仅仅是《七周七并发模型》介绍的众多模型之一。当今主流语言都竞相支持不同的并发模型,例如CSP模型、数据并行、函数式编程和Clojure的unified succession model。如果你想紧跟时代,我推荐阅读本书。
——Stuart Halloway,Cognitect联合创始人
并发编程近年逐渐热起来,Go等并发语言也对并发编程提供了良好的支持,使得并发这个话题受到越来越多人的关注。本书延续了《七周七语言》的写作风格,通过以下七个精选的模型帮助读者了解并发领域的轮廓:线程与锁,函数式编程,Clojure,actor,通信顺序进程,数据级并行,Lambda架构。书中每一章都设计成三天的阅读量。每天阅读结束都会有相关练习,巩固并扩展当天的知识。每一章均有复习,用于概括本章模型的优点和缺陷。
本书适合所有想了解并发的程序员。
......(更多)
Paul Butcher 资深程序员,涉猎广泛,从单片机编码到高级声明式编程无所不精。Paul是一位少年天才,8岁时就已经开始在8位机上编写游戏。最近几年他开始痴迷于赛车,想要去叫板汉密尔顿。除本书外,还著有在亚马逊获得全五星好评的《软件调试修炼之道》。
黄炎 现供职于上海爱可生,从事数据库高可用软件开发。简介和代码一样简洁。
......(更多)
译者序
推荐序
致谢
前言
第1章 概述
1.1 并发?还是并行?
1.2 并行架构
1.3 并发:不只是多核
1.4 七个模型
第2章 线程与锁
2.1 简单粗暴
2.2 第一天 互斥和内存模型
2.3 第二天 超越内置锁
2.4 第三天 站在巨人的肩膀上
2.5 复习
第3章 函数式编程
3.1 若不爽,就另辟蹊径
3.2 第一天 抛弃可变状态
3.3 第二天 函数式并行
3.4 第三天 函数式并发
3.5 复习
第4章 Clojure之道——分离标识与状态
4.1 混搭的力量
4.2 第一天 原子变量与持久数据结构
4.3 第二天 代理和软件事务内存
4.4 第三天 深入学习
4.5 复习
第5章 Actor
5.1 更加面向对象
5.2 第一天 消息和信箱
5.3 第二天 错误处理和容错性
5.4 第三天 分布式
5.5 复习
第6章 通信顺序进程
6.1 万物皆通信
6.2 第一天 channel和go块
6.3 第二天 多个channel与IO
6.4 第三天 客户端CSP
6.5 复习
第7章 数据并行
7.1 隐藏在笔记本电脑中的超级计算机
7.2 第一天 GPGPU编程
7.3 第二天 多维空间与工作组
7.4 第三天 OpenCL和OpenGL——全部在GPU上运行
7.5 复习
第8章 Lambda架构
8.1 并行计算搞定大数据
8.2 第一天 MapReduce
8.3 第二天 批处理层
8.4 第三天 加速层
8.5 复习
第9章 圆满结束
9.1 君欲何往
9.2 未尽之路
9.3 越过山丘
参考书目
......(更多)
线程与锁模型其实是对底层硬件运行过程的形式化。这种形式化即是该模型最大的优点,也是它最大的缺点。
为了增强软件的容错性,并发代码的关键是独立性和故障检测。独立性是指一个故障不会影响到任务以外的其它任务。故障检测是指当一个任务失败时(原因可能是任务崩溃、失去相应或者硬件故障),需要通知负责故障处理的其它任务来处理。
......(更多)