知识卡片

共享状态危险

普通读书笔记卡 · 1880.a

内容

共享状态需要多个参与者对同一事实保持一致,而并发会放大任何时序缝隙。与其在锁上堆复杂度,不如优先减少共享,让数据所有权更明确。

参考来源

- 位置:《程序员修炼之道:通向务实的最高境界(第2版)》第6章《并发》话题34「共享状态是不正确的状态」(源文件:_epub-src/text/part0015_split_002.html) - 结论依据:原文用两个服务员同时查看派存量却各自承诺给顾客的例子,说明共享状态在并发下会因非原子更新产生错误,需要信号量或让资源具备事务性来解决,直接支持卡片论点。 - 原始内容:"问题出在共享状态。餐馆里的每一位服务员都查看了陈列柜,却没有考虑到其他服务员。……提示57 共享状态是不正确的状态……这里的问题,不是两个进程可以同时向同一块内存写入数据。而是没有哪个进程能保证二者对内存的认知前后一致。"