11. 真实世界的并发编程

背景回顾:我们已经掌握了多种并发控制技术:自旋锁、互斥锁、条件变量、信号量。我们已经可以实现共享内存系统上的任意并发/并行计算。然而,大家也在使用这些 “底层” 并发控制时发现使用的困难。那么,真实世界的程序员是怎么实现并发程序的?

本讲内容:(本次课为科普,不需要掌握相关编程技术) Web、高性能计算、数据中心和人工智能中的并发 (并行) 编程模型和基本思想。

11.1 我们身边的并发编程

11.2 高性能计算中的并发编程

11.3 数据中心中的并发编程

11.4 人工智能时代的并发编程

Take-away Messages

对并发编程的争议一直存在,例如 “Threads cannot be implemented as a library”。实际上,我们在很多应用领域看到了 “领域特定” 的解决方案:Web 中的异步编程、高性能计算中的 MPI 和 OpenMI、数据中心中的 goroutines、人工智能时代的 CUDA。更有趣的是,我们可以看到:改变世界的技术,往往只是一个小小的奇思妙想,最终坚持到底得到的——它们很难被 “规划” 出来,而是需要一些 “背道而驰” 的人坚持到底。在当今的社会环境下,我们最缺少的是有能力背道而驰的人——有了下一代人的进步,才会有包容他们的土壤。

课后习题/编程作业

(本讲为科普内容,不要求掌握实际代码编写)

📚阅读材料

教科书 Operating Systems: Three Easy Pieces

  • 第 33 章 - Event-based Concurrency