Некоторые решения хорошо решаются агентами / актерами, а некоторые нет.Это различие не относится к языкам более чем , как конкретные проблемы вписываются в общие классы решений .Это (очень короткое) сравнение «Действующие лица / агенты» и «Ссылки», чтобы попытаться прояснить вопрос о том, что инструмент должен соответствовать проблеме параллелизма.
Актеры преуспели в распределенной ситуации, когда данных не требуетсяодновременно изменено .Если ваша проблема может быть выражена исключительно путем передачи сообщений, тогда актеры добьются цели.Актеры работают плохо, когда им необходимо изменить несколько связанных структур данных одновременно.Каноническим примером этого является перемещение денег между банковскими счетами.
Clojure ref
s - отличное решение проблемы многих потоков, которым необходимо изменить одно и то же одновременно .Они превосходны в многопроцессорных системах с общей памятью, таких как современные ПК и серверы.В дополнение к примеру с банковским счетом Рич Хики (автор clojure) использует пример игры в бейсбол, чтобы объяснить, почему это важно.Если вы хотите использовать актеров для представления бейсбольного матча, то перед тем, как переместить мяч, все поклонники должны будут отправить ему сообщение, спрашивающее, где он находится ... и если они хотят посмотреть, как игрок ловит мяч, то все получитсяболее сложный.
У Clojure есть cascalog, который делает записи заданий hadoop очень похожими на запись clojure.