我想玩boost::fiber库,但我遇到了“Hello,World”示例的问题。在下面的代码中,程序流程会在光纤结束并且主函数不再返回时阻塞。为什么加强::纤维块?
#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;
}
结果是:
之前加入。
你好,升压::纤维
我建boost::fiber当前开发分支的modular-boost目前的发展分支。这是当前实现中的行为错误还是我的用法有问题?
欢迎来到SO,感谢你发布了一个答案。您的答案似乎能够完成工作,但您可以通过为代码提供一些背景(甚至只是一个完整的句子)来改善答案。您可以在[回答问题的帮助页面](http://stackoverflow.com/help/how-to-answer)上找到其他提示。 –
这会抛出一个异常实例:** boost :: fibers :: fiber_resource_error **,因为分离之后光纤不再处于可连接状态。确切的错误信息是* boost fiber:光纤不可连接:无效的参数*。 – bobeff
嗯,我会认为我通过下一次。对不起,我的质量差的答案。我目前没有机器去测试。 只有一个想法: cout不是线程安全的。如果你从主例程中删除了cout语句并且只保留了一个在光纤中的语句,你的程序是否会完成? – user2386098