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

interrupting boost::asio::async_receive_from from another thread

本文关键字:async receive from asio 线程 中断 boost 另一个      更新时间:2023-10-16

我正在使用async_receive_from读取多播输入。因此,当我检测到间隙时,我会通知另一个助手线程请求/获取间隙填充消息。在这项工作中,主线程将继续接收任何传入消息并对其进行排队。这部分我可以执行。另一个线程可以使用waitforsingobject,我可以通过共享内存向它传递详细信息,并通知事件唤醒它。

但是,一旦它完成了它的任务,我如何让助手线程中断启动线程中的async_receive_from?当它从阅读中出现时,它知道是谁打断了它,所以它就会知道下一步该怎么办?

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

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