我的 Clojure 任务正在取得进展(在 4clojure.com 上解决了大约 80 个问题),我继续阅读和编码并尝试“得到它”。
现在我对 Clojure 被设计为“无锁并发”感到有点困惑。我对死锁非常了解(例如:“我编写的 Java 代码很糟糕,最终陷入死锁”,而不是“我是并发专家”)。我也读过这个:
我意识到 Clojure 程序不能死锁是多么的棒。
但我有点困惑:这样的壮举是通过在后台实现无锁算法实现的,还是使用了潜在的“可死锁”算法,但使用正确的实现保证永远不会死锁(这会以某种方式对 Clojure 程序员“隐藏” )?
最近有一个关于无锁算法的黑客新闻讨论:
http://news.ycombinator.com/item?id=4103921
参考1024cores.net上的以下“无锁算法”页面:
http://www.1024cores.net/home/lock-free-algorithms
我不明白这篇文章和 Clojure 下并发如何工作之间的关系。
这让我完全困惑:当我在 Clojure 中开发并发程序时,这是否意味着“锁和无锁算法”对我来说不是问题?