【发布时间】:2026-02-10 03:40:01
【问题描述】:
第一次在 C++ 中使用线程。我一直在研究使用 boost,这对我来说非常令人困惑。基本上我想做的就是:
- 创建一个异步执行某些工作的工作线程。在工作完成时继续主线程。
- 当工作线程完成后,触发一个回调函数,并在主线程上下文中执行一些结果。
类似于 C# 中的线程处理。
似乎没有对 2 的任何支持。将 io_service 与异步函数一起使用,然后在 io_service 上使用 run() 似乎阻塞了主线程。所以不是很异步。
我已尝试按照此处的示例使用 boost::future:Using boost::future with "then" continuations
这里的“then”延续是在一个单独的线程中完成的,而不是主线程,所以不是我想要的。有没有办法改变这个?使用 boost::launch::deferred 和 wait() 使调用同步,所以这也无济于事。与在 boost::future 构造上使用 get() 相同。
似乎唯一的选择是创建一个互斥锁共享事件队列,并在主线程中不断轮询它以获取新数据?
【问题讨论】:
标签: c++ multithreading asynchronous boost boost-thread