Модель Производитель/Потребитель равна Актеру?

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


person Gandalf    schedule 09.08.2011    source источник


Ответы (1)


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

Итак, в основном мой ответ заключается в том, что модель производитель/потребитель — это не пример модели Актера, а скорее пример набора Актеров, работающих в общей среде.

person yoozer8    schedule 09.08.2011
comment
Есть ли что-то неотъемлемое в парадигме Актеров, говорящее о том, что у вас не может быть нескольких Актеров? - person Gandalf; 10.08.2011
comment
На мой взгляд, парадигма Актера более репрезентативна для сущности, тогда как парадигма производитель/потребитель более репрезентативна для системы. - person yoozer8; 10.08.2011
comment
Хотя, я полагаю, вы могли бы считать систему производителя/потребителя Актером, если она существует в более крупной среде с другими сущностями и может взаимодействовать с другими сущностями в более крупной системе. - person yoozer8; 12.08.2011
comment
Это было своего рода моим первоначальным мышлением. Надеялся, что присоединятся еще люди, думаю, все слишком заняты, отвечая на вопросы. Как написать в файл на Java?... лол - person Gandalf; 12.08.2011