我正在进行Clojure的学习之旅(已经在4clojure.com上解决了大约80个问题),一直在阅读、编码和尝试“理解它”。
现在,我有点困惑于Clojure被设计为“无锁并发”。我对死锁非常了解(例如:“我曾编写过不良Java代码导致死锁”,而不是“我是并发方面的专家”)。我也读过这篇文章:
我意识到Clojure程序不会出现死锁的好处。
但我有点困惑:这种成就是通过实现底层的无锁算法实现的,还是可能使用了“可以发生死锁”的算法,但是使用正确的实现保证永远不会死锁(这种方式对Clojure程序员来说似乎是“隐藏的”)?
最近在 hacker news 上讨论了无锁算法:
http://news.ycombinator.com/item?id=4103921
引用了 "Lock-free algorithms" 页面上的 1024cores.net:
http://www.1024cores.net/home/lock-free-algorithms
我不理解这篇文章与Clojure下并发工作的关系。
这让我非常困惑:当我在Clojure中开发并发程序时,这是否意味着“锁和无锁算法”对我来说是不重要的?