Друзья программисты, а объясните мне, пожалуйста, кто нибудь, почему модель Actors, она же модель передачи сообщений, считается масштабируемой?
Т.е., например, мне понятно, почему синхронизация на семафорах или кондварах масштабируемой не является. Мне также понятно, почему можно надеяться, что модели с транзакционной памятью являются масштабируемыми.
Но я никак не могу понять, откуда может взяться масштабируемость у Актёров?
Допустим, у меня есть банковская аппликация. Каждый актёр ответственен за ведение отдельного счета, я могу каждому актёру послать команду добавить деньги на счет и снять деньги со счета. Теперь, скажем, мне нужно атомарно перевести деньги с одного счета на другой, и? Как сию операцию я могу выполнить в модели Актёров (не вводя некоторого актёра более высокого ранга, блокирующего все остальные операции уже по всему банку - т.е. делая что-то аналогичное введению внешнего глобального мютекса, и не вводя какой-то более тонкий протокол "блокировок" каждого актёра, что было бы опять же аналогично открытию приватного мютекса для использования во внешнем коде)?
Т.е. я не понимаю, чем в данном случае использование актёров круче, чем использование мютексов. И то и другое - не масштабируемо. Молва же утверждает иное.
Полнейшее недоумение.
----------
ПС: возможно, у меня какая-то базовая ошибка, я не вполне в теме и не вполне уверен, что понимаю смысл этой модели. Конечно, там-сям читал всякий код, использующий рандеву в Аде итд итп, но, возможно, что-то базовое всё же не осознаю.
Т.е., например, мне понятно, почему синхронизация на семафорах или кондварах масштабируемой не является. Мне также понятно, почему можно надеяться, что модели с транзакционной памятью являются масштабируемыми.
Но я никак не могу понять, откуда может взяться масштабируемость у Актёров?
Допустим, у меня есть банковская аппликация. Каждый актёр ответственен за ведение отдельного счета, я могу каждому актёру послать команду добавить деньги на счет и снять деньги со счета. Теперь, скажем, мне нужно атомарно перевести деньги с одного счета на другой, и? Как сию операцию я могу выполнить в модели Актёров (не вводя некоторого актёра более высокого ранга, блокирующего все остальные операции уже по всему банку - т.е. делая что-то аналогичное введению внешнего глобального мютекса, и не вводя какой-то более тонкий протокол "блокировок" каждого актёра, что было бы опять же аналогично открытию приватного мютекса для использования во внешнем коде)?
Т.е. я не понимаю, чем в данном случае использование актёров круче, чем использование мютексов. И то и другое - не масштабируемо. Молва же утверждает иное.
Полнейшее недоумение.
----------
ПС: возможно, у меня какая-то базовая ошибка, я не вполне в теме и не вполне уверен, что понимаю смысл этой модели. Конечно, там-сям читал всякий код, использующий рандеву в Аде итд итп, но, возможно, что-то базовое всё же не осознаю.