我想玩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