从另一个线程中断boost :: asio :: async_receive_from

时间:2011-06-21 20:02:09

标签: c++ windows boost-asio

我正在使用async_receive_from阅读多播输入。所以我的想法是,当我检测到间隙时,我将通知另一个帮助程序线程请求/获取间隙填充消息。虽然这是在工作中,主线程将继续接收和排队任何传入的消息。这部分我可以实现。另一个线程可以使用waitforsingleobject,我可以通过共享内存传递详细信息并通知事件将其唤醒。

但是一旦完成任务,我如何让helper线程中断启动线程中的async_receive_from?当它从读取中出现时,它知道谁被打断了,那么它将知道下一步该做什么?

1 个答案:

答案 0 :(得分:1)

为什么在线程之间使用共享内存?

除此之外,您应该用于在管理套接字的io_service上下文中执行某些操作的机制是post()。您可以将任意事件发布到io_service,它将在该上下文中执行。真的很简单......因为你正在调用async_receive_from,它没有阻塞,即io_service可以调度其他事件,这就是post可以工作的原因。