为什么 boost::fiber 块?

Why boost::fiber blocks?

我正在尝试使用 boost::fiber 库,但 "Hello, World" 示例存在问题。在下面的代码中,程序流在 fiber 完成后阻塞,并且 main 函数永远不会 returns.

#include <iostream>
#include <boost/fiber/all.hpp>

using namespace std;

void helloFiber()
{
  cout << "Hello, boost::fiber" << endl;
}

int main()
{
  boost::fibers::fiber f(helloFiber);

  cout << "Before join." << endl;
  f.join();
  cout << "After join." << endl;

  return 0;
}

结果是:

Before join.
Hello, boost::fiber

我用 modular-boost 的当前开发分支构建了 boost::fiber 当前开发分支。这是当前实现中的行为错误还是我的使用有问题?

试试这个

int main()
{
  boost::fibers::fiber f(helloFiber);
  f.detach();
  f.join();

  return 0;
}

http://www.boost.org/doc/libs/1_58_0/doc/html/thread.html

您的测试应用打印:

加入之前。 你好,boost::fiber 加入后

也许您从分支 develop

中检查了一个损坏的版本