【发布时间】:2016-10-27 16:16:48
【问题描述】:
void helloFiber(boost::fibers::future<void> &f)
{
cout << "Hello, boost::fiber" << endl;
f.get();
}
int main()
{
boost::fibers::promise<void> pm;
boost::fibers::future<void> ft = pm.get_future();
{
boost::fibers::fiber f(helloFiber, std::move(ft));
cout << "Before join." << endl;
f.detach();
}
pm.set_value();
cout << "After join." << endl;
return 0;
}
这个程序输出:在加入之前。加入后。你好,boost::fiber。
为什么不输出:加入前。你好, boost::fiber 加入后。
【问题讨论】:
-
为什么要这样?如果您希望按特定顺序执行,则应编写顺序代码。否则不要持有无根据的假设。
-
希望创建后的fiber马上实现。但是好像没有找到合适的方法,fiber.join() 方法被阻塞了。我希望找到一个不阻塞并立即执行