【发布时间】:2012-06-17 09:57:06
【问题描述】:
我的 Clojure 任务正在取得进展(在 4clojure.com 上解决了大约 80 个问题),我继续阅读和编码并尝试“得到它”。
现在我对 Clojure 被设计为“无锁并发”感到有些困惑。我对死锁非常了解(例如:“我编写的 Java 代码很糟糕,最终陷入死锁”,而不是 “我是并发专家” em>)。我也读过这个:
Why is lockless concurrency such a big deal (in Clojure)?
我意识到 Clojure 程序不能死锁是多么的棒。
但我有点困惑:这样的壮举是通过在后台实现无锁算法实现的,还是使用了潜在的“可死锁”算法,但使用正确的实现保证永远不会死锁(这会以某种方式“隐藏” Clojure 程序员)?
最近有关于无锁算法的黑客新闻讨论:
http://news.ycombinator.com/item?id=4103921
参考 1024cores.net 上的以下“无锁算法”页面:
http://www.1024cores.net/home/lock-free-algorithms
我不明白这篇文章和 Clojure 下并发如何工作之间的关系。
这让我完全困惑:当我在 Clojure 中开发并发程序时,这是否意味着“锁和无锁算法”对我来说不是问题?
【问题讨论】:
-
另外,lock-free 和 lockless 标签都没有 wiki。它们是同义词吗?这两个标签不应该合并还是它们是不同的东西?
-
Clojure 拥有非常不同寻常的深刻概念,因此[几乎] 不可能通过简单地学习语法和解决难题来“获得”它们。如果您的目标是“真正获得 Clojure”,那么我建议您阅读一本好的 Clojure 书籍。亚马逊上有大约 5 个。那么我保证你能回答你自己的问题。
-
@Dmitry Kakurin:我可以看出你是新来的。您的评论表明您不了解 SO 的工作原理。 SO 是一个提问的地方,就像这个得到了 8 个赞和 3 个收藏的地方。 SO 不是一个让你上马并通过告诉他们不会“得到它”并且他们不会通过解决难题来向正在学习新语言的人撒尿的地方应该阅读书籍来回答他们自己的问题,而不是在 SO 上问他们。现在如果你 “真的想获得 StackOverflow” 我建议你阅读 SO FAQ ; )
-
@Dmitry Kakurin:作为 SO 工作原理的提示:它通过让人们参与其中来工作。看看我的问题和两个很好的答案:谁确实为 SO 带来了更多价值?我通过问这个问题和两个回答得很好的人或者你,你的尖刻评论淡化了我和我的解谜活动?
-
你的暴力反应是无缘无故的。但最重要的是,您错过了我的观点:如果您的目标是让自己熟悉该语言,那么您所做的就很好(而且我绝不是在试图淡化您的努力)。但是,如果您想“了解”Clojure 在概念上与许多其他语言的不同之处,那么阅读一本好书是必经之路,解决难题不太可能让您到达那里。再次尝试阅读我的评论,而不是作为攻击,而是作为基于经验的建议。然后随意忽略它。
标签: concurrency clojure locking lock-free lockless