I'm progressing in my Clojure quest (about 80 problems solved on 4clojure.com) and I keep on reading and coding and trying to "get it".
Now I'm a bit confused by Clojure being designed for "lockless concurrency". I know all too well about deadlocks (as in: "I've written poor Java code that ended up in deadlocks", not as in "I'm in expert in concurrency"). I've also read this:
Why is lockless concurrency such a big deal (in Clojure)?
I realize how great it is that Clojure programs cannot deadlock.
But I'm a bit confused: is such a feat achieved by implementing under the hood lockfree algorithms or are there potentially "deadlockable" algorithms used, but using a correct implementation guaranteed never to deadlock (that would somehow be "hidden" to Clojure programmers)?
There's been a recent discussion on hacker news about lockfree algorithms:
http://news.ycombinator.com/item?id=4103921
referencing the following "Lock-free algorithms" page on 1024cores.net:
http://www.1024cores.net/home/lock-free-algorithms
I don't understand the relation between this article and how concurrency works under Clojure.
And it got me totally confused: when I'm developing concurrent programs in Clojure, does it mean "locks and lock-free algorithms" are a non-issue for me?