use*_*156 7 c++ design-patterns boost-asio reactor active-objects
据我所知,活动对象设计模式是将一个(私有/专用)线程生命周期与一个对象捆绑在一起并使其在独立数据上工作.从我读到的一些文档中,这种范式的演变是由于两个原因,第一,管理原始线程会很痛苦,第二个争用共享资源的线程使用互斥锁和锁不能很好地扩展.虽然我同意第一个原因,但我并不完全理解第二个原因.使对象处于活动状态只会使对象独立,但是锁定/互斥锁争用等问题仍然存在(因为我们仍然有共享队列/缓冲区),该对象只是将共享责任委派给消息队列.我看到的这种设计模式的唯一优势是我不得不在共享对象上执行长的异步任务(现在我只是将消息传递给共享队列,线程不再需要在互斥锁上长时间阻塞/锁,但他们仍然会阻止并争夺发布消息/任务).除了这种情况,有人可以告诉更多场景,这种设计模式将具有其他优势.
我的第二个问题是(我刚开始挖掘设计模式),活动对象,反应堆和前驱设计模式之间的概念差异是什么.您如何确定哪种设计模式更有效并更符合您的要求.如果某人能够展示某些示例来展示这三种设计模式将如何表现以及哪种模式在不同场景中具有比较优势/劣势,那将是非常好的.
我有点困惑,因为我使用了活动对象(使用共享线程安全缓冲区)和boost :: asio(Proactor)来做类似的异步内容,我想知道是否有任何人对适用性有更多的见解接近问题时的不同模式
| 归档时间: |
|
| 查看次数: |
5206 次 |
| 最近记录: |