从另一个线程中断boost::asio::async_receive_from
interrupting boost::asio::async_receive_from from another thread
我正在使用async_receive_from
读取多播输入。因此,当我检测到间隙时,我会通知另一个助手线程请求/获取间隙填充消息。在这项工作中,主线程将继续接收任何传入消息并对其进行排队。这部分我可以执行。另一个线程可以使用waitforsingobject,我可以通过共享内存向它传递详细信息,并通知事件唤醒它。
但是,一旦它完成了它的任务,我如何让助手线程中断启动线程中的async_receive_from
?当它从阅读中出现时,它知道是谁打断了它,所以它就会知道下一步该怎么办?
为什么在线程之间使用共享内存?
除此之外,在管理套接字的io_service
上下文中执行某些内容时应该使用的机制是post()
。您可以将任意事件发布到io_service,它将在该上下文中执行。真的很容易。。。因为您正在调用async_receive_from
,所以它没有阻塞,即io_service可以调度其他事件,这就是post
工作的原因。
相关文章:
- 为什么std::async使用同一个线程运行函数
- 为什么可以将左值传递给"std::async",即使它引用了右值
- 使用用户定义的参数调用future/async并调用类方法
- 如何在 Boost.Asio 中使用 Zero-copy sendmsg/receive
- 使用 std::async 时死锁,将来作为成员
- 为什么我不能将引用作为 std::async 的函数参数传递
- std::async from std::async in windows xp
- Google Cloud Pubsub Async Streaming API in C++
- -fno-unwind-tables 和 -fno-async-unwind-tables 不起作用 NDK clang
- std::async 如何工作:为什么它会调用这么多次复制/移动?
- std::async 不会立即调用
- async中没有匹配的函数(模板中未解析的类型)
- std::async 如果线程是从 DLL 创建的,则会阻止进程退出?
- 使用 std::vector<std::future<int>> 和 std::async 启动几个线程时中止
- 在Visual Studio中,与std::async一起使用时不调用"thread_local"变量"析构函数,这是一个错误吗?
- C++ | TCP - receive
- 可能的 std::async 实现错误 Windows
- 为什么使用线程池时嵌套调用 boost::async 会阻塞?
- C++从 std::async 函数读取命名空间中的全局变量标志
- std::async 究竟是如何执行的?