我的第二个问题是(我刚刚开始挖掘设计模式),活动对象、反应器和前摄器设计模式之间的概念区别是什么。您如何决定哪种设计模式更有效并且更适合您的要求。如果有人能够演示某些示例,展示三种设计模式的行为方式以及哪一种在不同场景下具有比较优势/劣势,那就太好了。
我有点困惑,因为我使用了活动对象(使用共享线程安全缓冲区)和 boost::asio(Proactor) 来执行类似的异步操作,我想知道是否有人对此有更多见解解决问题时不同模式的适用性。
ACE 网站 有一些关于 Active Object、Proactor 和 Reactor 设计模式的非常好的论文。他们的意图的简短摘要:
活动对象设计模式解耦方法执行 从方法调用到增强并发性和 简化对驻留在其中的对象的同步访问 自己的控制线程。也称为:并发对象、Actor。
Proactor模式支持解复用和调度 多个事件处理程序,由完成触发 异步事件。这种模式在 Boost.Asio 中大量使用。
Reactor设计模式处理交付的服务请求 一个或多个客户端同时提交一个应用程序。每项服务 一个应用程序中可能包含多种方法,并表示为 一个单独的事件处理程序,负责调度特定于服务的事件 要求。也称为:调度程序、通知程序。