Clojure - это функциональный язык программирования, разработанный для использования преимуществ многоядерных / SMP-процессоров. Вы можете получить много от функционального языка программирования без доступа к общей памяти, и действительно, Erlang делает это замечательно, но он не использует все возможности процессора.
Где clojure сияет по сравнению с языками «модель актора», это когда несколько потоков хотят работать над одними и теми же данными осмысленным и скоординированным образом. Если у вас есть тривиально распараллеливаемая проблема, такая как обработка изображений, вам не нужны эти преимущества, и вы можете просто отправить один кусок данных каждому работнику. Когда эти биты данных взаимозависимы, то скоординированный совместный доступ становится реальным преимуществом.
В контексте игр вы можете использовать это для создания множества потоков, обновляющих игровой мир, и одного потока, показывающего его пользователю. ref
гарантирует, что пользователь всегда видит непротиворечивый игровой мир, в то время как многие потоки его редактируют. без этого вам потребуется, чтобы каждый поток отвечал за определение, когда показывать его пользователю, или только на тему.
Другая причина использования такой модели для редактирования игрового мира, кроме скорости, заключается в том, чтобы позволял вам разделять процессы, которые делают разные вещи, на разные потоки в одном из ранних примеров замыкания Рича, который он показывает, симулятор муравья, где каждый муравей имеет свой собственный поток, который обновляет положение муравьев на доске, что сделало некоторый очень короткий и простой код.