初读《七周七并发模型》

前几天粗略翻阅了一下《七周七并发模型》,这是本从v2ex上收来的二手书,虽然算上快递费也并没比新买一本便宜多少,但是知识是无价的,呵呵。

《七周七并发模型》讲了7种软件开发中最常使用的并发模型,分别是:

  1. 线程和锁,最基础最常用,也是其他并发模型的技术基础。我目前经历过的C++项目中基本上都是使用的这种方案,顶多就是选取不同的锁以应付不同的应用场景。
  2. 函数式编程,书中讲了Clojure语言,一种基于JVM而语法上又类似Lisp的语言。函数式编程本身有很多值得讲的,据说它天然的无副作用函数特别适合并发编程,但我还是没搞清楚。函数式编程有三类场景,分别是map,filter和reduce,然后用future来实现异步求值。Qt中对这些都提供了支持,C++标准库中也有一部分支持,但具体怎么在我们的C++项目中通过使用函数式编程来达到书中所说的并发无副作用的效果,我还是没有头绪。
  3. 分离标识和状态。书中仍然以Clojure为例,说到很多编程语言中,变量就是混合了标识和状态,然后引入了原子变量,可以在需要读写变量时提供一个副本。我一直以来只是把原子变量当成更小粒度的锁的应用,还真没想到它有其他更高级的用法。这部分我也没搞明白,需要继续学习。
  4. actor模型,就是Erlang用到的,进程各自互不干扰地运行,通过消息通信,进程崩溃也就崩溃了。
  5. CSP模型,就是Go用的,与actor的区别在于CSP更侧重于通信信道的建立和维护,actor更侧重于信道两侧的实体。
  6. 使用GPU做并行计算,可以用OpenCL、CUDA之类的库实现,这块我也没接触过。
  7. lambda计算,分布式计算用到的,我也没接触过。

现在感觉我目前用到的编程语言(C++、Go)对前3种都至少有一定程度的支持,可以好好挖掘一下适用的场景。actor和CSP则是特定的编程语言才会有支持,除非用到了这些语言做开发,不然也不用多想。第6种主要适用大量代数运算的场景。

总的说来,收获很大。

本文地址:

https://minidump.info/blog/2018/01/seven-concurrent-models-in-seven-weeks/

上一篇

抓取网络小说到Kindle更新

抓取网络小说的小程序断断续续有了不少更新,除了支持更多的小说网站外,还有一些值得一提的内容: 程序结构更加紧凑灵活,新增或删除支持的小说网站只需要直接增加源代码文件或删除对应的源代码文件即可,不需要修改原有的代码。 新增了支持直接生成epub和pdf格式,其中默认的pdf排版针对Kindl...…

Shareware 全文阅读
下一篇

树莓派uptime达到365天

今天,我屋里的树莓派uptime已经达到365天了,整整一年,截图留念一下。…

embed 全文阅读