![](/img/trans.png)
[英]program crash with boost::asio::spawn and socket::async_receive_from
[英]interrupting boost::asio::async_receive_from from another thread
我正在使用async_receive_from
读取多播输入。 因此,想法是当我检测到间隙时,我将通知另一个帮助程序线程来请求/获取间隙填充消息。 在此过程中,主线程将继续接收所有进入的消息并将它们排队。 这部分我可以实现。 另一个线程可以使用waitforsingleobject,我可以将其详细信息通过共享内存传递,并通知事件以将其唤醒。
但是一旦完成任务,如何获得帮助线程来中断启动线程中的async_receive_from
? 当读取结果出来时,它知道是谁打断了,所以它将知道下一步该怎么做?
为什么在线程之间使用共享内存?
除此之外,在管理套接字的io_service
上下文中用于执行某些操作的机制应该是post()
。 您可以将任意事件发布到io_service,它将在该上下文中执行。 确实很容易...因为您正在调用async_receive_from
,所以它不会阻塞,即io_service可以调度其他事件,这就是该post
可以正常工作的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.