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