知识卡片

通过通信实现同步而非共享内存

普通读书笔记卡

内容

并发编程设计原则:”不要通过共享内存实现通信,而应通过通信实现共享内存”,即用消息传递代替共享内存加锁。多进程模型(如Nginx Master+Worker)天然符合:进程间靠管道/Socket通信,避免加锁开销,还带来故障隔离。多线程模型则习惯共享内存加锁。发散:此原则可迁移到分布式系统与团队协作——靠共享状态协调的系统比靠消息通信的更脆弱。

参考来源

- 位置:第4章《操作系统》4.4节「通过通信实现同步而非共享内存」相关小节(源文件:_epub-src/text/part0013.html) - 结论依据:原文明确给出并发编程的重要设计原则——'不要通过共享内存来实现通信,而应通过通信实现共享内存',并说明进程间不共享资源、通过管道或Socket通信天生符合此原则,而多线程习惯共享内存加锁,直接支持卡片对该原则、多进程模型天然符合、多线程习惯共享内存加锁的论述。 - 原始内容:"在并发编程领域,一直有一个很重要的设计原则:'不要通过共享内存来实现通信,而应通过通信实现共享内存。'……进程是资源分配的基本单位,进程间不共享资源,通过管道或者Socket方式通信……这种通信方式天生符合上面的并发设计原则。"