boost和单线程事件驱动模型

时间:2011-06-11 19:25:56

标签: c++ events boost

Boost不提供单线​​程事件驱动模型,这在Unix上普遍存在于pthreads - mainloop +“callbacks”之前,是吗?

例如,如果我想在单线程应用程序中使用boost :: message_queue,并将其与计时器和其他异步事件(mainloop)混合使用,那么boost不支持它,我是对的吗?

2 个答案:

答案 0 :(得分:10)

我看看

  1. Boost::Signals(您可以按照自己的意愿使用它们)
  2. Boost::Asio(最重要的是:strands)。 Strands将让你拥有你的蛋糕并且也可以吃它(通过单线程语义同时仍然启用并行工作,如果你允许我的 COM感染的双关语,则在另一个'单线程公寓')。对于您的问题,就钱是正确的,因为它会自动同步并将工作排队,以便在您调用它时进入“主”线程。
  3. 如果要将两者合并,请务必使用Boost Signals2(因为它支持线程)。

答案 1 :(得分:6)

boost::interprocess::message_queue专为多处理而设计。在单线程进程中,您始终可以使用std::queue