【问题标题】:Howto run async boost function in c++?如何在 C++ 中运行异步增强功能?
【发布时间】:2018-08-29 04:22:40
【问题描述】:

有谁知道我如何使用 boost 运行异步函数,假设我想异步运行 foo 和 bar 函数?类似于 python 中的 asyncio 函数。

演示代码

void foo(){ }
void bar(){ }

int main(){ return 0;}

提前致谢。

【问题讨论】:

  • 你是说喜欢threads吗?还是std::async?您能否详细说明您遇到并想要解决的问题?
  • 编辑了问题
  • 喜欢 std::async,但我不想等待未来

标签: c++11 asynchronous boost-asio c++17


【解决方案1】:

如果您只想并行运行foobar,可以使用<future> - 不需要Boost:

int main()
{
    auto f = std::async(std::launch::async, &foo);
    bar();
}

【讨论】:

  • 但我不想等待未来的结果。
  • @user1779646:提供一个你想做什么的例子。你为什么要打电话给foo,而不是等待它完成......?
  • 它们都会在程序的生命周期内继续产生结果,并在它们之间共享结果。
  • @user1779646 看起来你想要的是threads。函数独立于程序其余部分运行的地方。
  • @user1779646 我建议对此有所了解。没有“共享结果”之类的东西,除非您先等待它(那是一场数据竞赛),也没有“以相同的速度运行”之类的东西。线程要么运行,要么不运行。操作系统会安排这些。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 2020-11-07
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
  • 1970-01-01
  • 2020-02-04
相关资源
最近更新 更多