【发布时间】:2015-07-13 10:04:25
【问题描述】:
我的问题更多是架构问题。我有多个相同类型的状态机。说
controller_type1_sm controller1;
controller_type2_sm controller2;
std::array<worker1_sm,10> workers1;
std::array<worker2_sm,10> workers2;
现在,当一个控制器发送消息时,我是否应该使用一个调度程序将名称或 ID 调度到一个队列,该队列由在指定 msm 上调用 process_event() 的线程工作?
当事件从一个公共基础派生时,它们可以保存在一个通用队列中,但process_event() 需要知道它是什么类型的事件。访客班来派遣他们?有更好的解决方案吗?
当我将事件限制为数字 ID 时,我可以消除很多问题,但另一方面,MSM 需要类型而不是 ID。
调用process_event() 的线程需要知道它们工作的状态机的类型。模板显然...
编辑: 目标是解耦实现。
【问题讨论】:
标签: c++ multithreading c++11 boost boost-msm