假设我有许多异步状态机定义了boost::statechart。运行多个异步状态机的明确记录的机制是将其中一个或多个异步状态机修复到一个线程上。但是,就我的目的而言,我需要运行许多很多异步状态机,而每个线程运行一个线程是不行的。而且,任何给定状态机所做的工作量是不可预测的,因此将状态机分配给固定线程将导致不平衡。
相反,我希望有一个线程池,其中空闲的线程可以从队列中提取一定数量的工作。这里需要注意一些事情,以便按顺序将事件传递到给定的状态机。可能的起点是实现Scheduler和FifoWorker概念,以便分别作为fifo_scheduler类和fifo_worker类的替代。然而,我不知道这个问题是否已经被别人解决了,或者我只是问错了问题。
发布于 2015-10-09 17:49:39
回答我自己的问题,现在我有时间考虑了。这很简单:
这也确保了事件的顺利进行而不诉诸其他手段。
这不是最好的答案,因为服务函数将占据队列中的一个空间,即使没有工作可做,也会被调用。
https://stackoverflow.com/questions/33027535
复制相似问题