Поэтому в последнее время я читал много статей о том, как сложно параллельное программирование и как почти невозможно параллельное программирование с общим состоянием. Таким образом, такие языки, как Erlang (я думаю, что это включено, если вопрос не имеет смысла) используют модель Актера для параллелизма и не имеют общего состояния между потоками. Теперь, когда я программировал параллельные системы, я не обнаружил, что параллелизм - это так сложно, но в целом я могу вписать почти любую проблему в парадигму производитель/потребитель и жить без большого (если вообще) общего состояния. Хотя это правильно? Являются ли очереди сообщений между потоками общим состоянием? Или модель параллельного программирования производителя/потребителя действительно является конкретным примером модели Актера (это мой реальный вопрос). Мысли?
Модель Производитель/Потребитель равна Актеру?
Ответы (1)
Технически общие сообщения представляют состояние всеобъемлющего приложения, но только в том случае, если производители и потребители сами не имеют состояния (в противном случае они просто представляют состояние (состояния) среды обмена сообщениями). Модель производитель/потребитель является не столько примером модели актора, сколько каждым отдельным производителем и потребителем. Производители (которые также могут быть потребителями из тех же общих очередей сообщений или из внешних источников) делают то, что они делают, и выдают какое-то сообщение, которое попадает в очередь. Сама очередь может считаться актором, хотя и пассивным, поскольку она получает/хранит сообщения и может их распределять (или просто ждать, пока они будут приняты). Потребители являются действующими лицами в том смысле, что они принимают/получают сообщения из общей очереди и выполняют работу на основе этих сообщений.
Итак, в основном мой ответ заключается в том, что модель производитель/потребитель — это не пример модели Актера, а скорее пример набора Актеров, работающих в общей среде.