Использовать Активный объект или нет?

Шаблон проектирования активного объекта, насколько я понимаю, связывает время жизни (частного/выделенного )потока с объектом и заставляет его работать с независимыми данными. Из документации, которую я читал, эволюция этого вида парадигмы была вызвана двумя причинами: во-первых, управление необработанными потоками было бы болезненным, а во-вторых, большее количество потоков, конкурирующих за общий ресурс, плохо масштабируется с использованием мьютексов и блокировок. в то время как я согласен с первой причиной, я не вполне понимаю вторую. Активация объекта просто делает объект независимым, но такие проблемы, как конкуренция за блокировку/мьютекс, все еще существуют (, поскольку у нас все еще есть общая очередь/буфер ), объект просто делегировал ответственность за совместное использование очереди сообщений. Единственным преимуществом этого шаблона проектирования, как я вижу, является случай, когда мне пришлось выполнять длинную асинхронную задачу для общего объекта (теперь, когда я просто передаю сообщение в общую очередь, потоки больше не должны блокироваться на долгое время. mutex/locks, но они по-прежнему будут блокироваться и бороться за публикацию сообщений/задач ). Помимо этого случая, может ли кто-нибудь рассказать больше сценариев, в которых этот тип шаблона проектирования будет иметь другие преимущества.

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

Я немного запутался, так как использовал активный объект (, который использовал общий поток -безопасный буфер )и boost ::asio (Proactor )для выполнения аналогичных асинхронных операций., я хотел бы знать, есть ли у кого-нибудь больше информации о применимости различных шаблонов при подходе к проблеме.

7
задан user179156 19 April 2012 в 22:36
поделиться