18. 真实世界的并发编程 (1)

背景回顾:并发编程的基础机制 (线程、互斥锁、条件变量、信号量等) 足够实现高效的并发/并行编程,但它们的正确使用是完全由使用者负责——这毫无疑问是个过于乐观的假设。因此,编程语言的设计者们在不同的应用场景下,实现了许多并发/并行编程的机制。

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

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

💬
Prompt: 高性能计算中的并行编程,通常计算图容易静态切分,例如物理模拟的网格划分。网格边界通常是怎么并行处理的?

18.2 我们身边的并发编程

18.3 数据中心中的并发编程

总结

Take-away messages: 我们在 “更好的编程” 这条路上从未停止过努力。针对不同应用的应用,最终形成了 “领域特定” 的解决方案:Web 中的异步编程、高性能计算中的 MPI 和 OpenMI、数据中心中的 goroutines。更有趣的是,我们可以看到:改变世界的技术,往往只是一个小小的奇思妙想,最终坚持到底得到的。

课后习题/编程作业

📚阅读材料

教科书 Operating Systems: Three Easy Pieces

  • 第 33 章 - Event-based Concurrency