笔记:软件开发的转折——并发化

——文章The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software By Herb Sutter的读书笔记

免费午餐的结束

近年来,摩尔定律失效、主频提速放缓,下一代CPU设计提高性能的方法:超线程(Hyperthreading)、多线程、缓存。

从1990年代至今,面向对象编程成为主流的原因,是其优势明显——能解决更大型的问题、更好的依赖解决;而其劣势——性能代价大,由摩尔定律——不断提速的CPU性能,所补偿,作者成为『免费的午餐』:人们使用面向对象方法写出性能低下的软件,等到交付后不久,硬件水平很快跟上。

但是到了现在,摩尔定律失效,作者认为软件开发将迎来下场革命:并发化。

并发化的代价和好处

目前并发化,多线程在主流开发广泛应用的原因:

  1. 自然地分离逻辑上独立的控制流
  2. 为了效率

并发化的代价:

  1. 需要人工规划没有瑕疵的并发模型 -> 漏洞产生竞争 -> 难以全面测试,debug耗时
  2. 并非所有应用适合并发
  3. 当设计不善时,获取锁的代价昂贵

对我们意味着什么

  1. 如果要使应用性能提升,压榨CPU吞吐性能,必须并发化。这是未来的『免费午餐』,如果未来Intel推出100核的CPU。但并非所以应用适合并发。
  2. CPU将越来越可能地,成为部分应用的下一个瓶颈,随I/O、网络、数据库瓶颈之后。
  3. 对于编程语言,效率性能优化将越来越重要。因为CPU主频的免费午餐(摩尔定律)趋于消失。
  4. 编程语言和系统,将越来越多地被迫支持、优化并发。更少的并行化标准(如pthread和OpenMP),更多的语言层面的支持(如Erlang Scala)。主流的lock-based编程是危险的,我们急切希望新的更高级的语言提供并发编程模型。

结论

  1. 打开你的项目看看有什么CPU密集的部分,可以从并发化获得好处。
  2. 花时间去学习并发编程,如这本书《七周七并发模型》by Paul Butcher
本文有帮助?