第12章:并发编程

并发与并行,傻傻分不清楚?

导读

处理器发展的趋势:多核时代早已到来!免费的午餐已经结束了!

参考文章(Herb Sutter):The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software

多核处理器成为上述变革的主流解決方案,想要压榨出更多的处理器效能,软件必须跟上硬件的设计!

学习方式

CMU教授的视频教程 - Lecture23:并发编程

CMU教授的视频教程 - Lecture24:同步(基础)

CMU教授的视频教程 - Lecture25:同步(进阶)

CMU教授的视频教程 - Lecture26:线程级并行

重点解读

【大佬讲座】谷歌大神 Rob Pike:并发 vs 并行 (傻傻分不清楚?)

Concurrency (并发)指程序架构,将程序拆成多个可独立运行的部分,不一定要同时运行,Parallelism(并行) 指程序执行,同时执行多个程序。

Concurrency 可能会用到 Parallelism,但不一定要用 Parallelism 才能实现 Concurrency。在 Concurrent 中,工作可拆分成「独立执行」的部份,于是「可以」让很多事情一起做,但「不一定」要真的同时做,参见下图。

以Rob Pike的地鼠烧书为例:1) 如何分割各个地鼠负责的工作, 2)各个地鼠如何进行高效的协调与沟通

那么我们究竟应该如何创建一个并行程序呢?以下流程图示取自CMU:15-418 并行计算架构与编程。

延伸阅读

Last updated