Является ли Clojure свободным от блокировки с помощью алгоритмов блокировки?

Я продвигаюсь в своем квесте 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, значит ли это, что «блокировки и алгоритмы без блокировок» для меня не проблема?

10
задан Community 23 May 2017 в 12:33
поделиться