Я продвигаюсь в своем квесте Clojure (около 80 задач, решенных на 4clojure.com), и я продолжаю читать, кодировать и пытаться "получить это».
Теперь я немного сбит с толку тем, что Clojure разработан для «параллелизма без блокировки».Я слишком хорошо знаю о взаимоблокировках (как в: «Я написал плохой код Java, который привел к взаимоблокировкам», а не как в «Я эксперт в параллелизме»). Я также читал это:
Почему параллелизм без блокировки так важен (в Clojure)?
Я понимаю, как здорово, что программы Clojure не могут зайти в тупик.
Но я немного сбит с толку: достигается ли такой подвиг за счет скрытой реализации алгоритмов без блокировок, или же используются потенциально «блокирующие» алгоритмы, но с использованием правильной реализации, которая гарантированно никогда не приведет к взаимоблокировке (это каким-то образом будет «скрыто» программистам Clojure)?
Недавнее обсуждение хакерских новостей об алгоритмах без блокировки:
http://news.ycombinator.com/item?id=4103921
со ссылкой на следующие «алгоритмы без блокировки»] на странице 1024cores.net:
http://www.1024cores.net/home/lock-free-algorithms
Я не понимаю связи между этой статьей и тем, как работает параллелизм под Кложур.
И это привело меня в полное замешательство: когда я разрабатываю параллельные программы на Clojure, значит ли это, что «блокировки и алгоритмы без блокировок» для меня не проблема?