2010-10-14 25 views
12

我正在嘗試C++ 0x線程,部分在gcc 4.5中實現,我遇到了一個我無法理解的問題。讓我們來看看這段代碼std :: C++的gcc實驗性實現的未來異常0x

#include <future> 
#include <iostream> 

int main() 
{ 
     std::cout << std::async([]() { return 10; }).get() << std::endl; 
} 

這很簡單,應該可以工作,但事實並非如此。它拋出的std :: SYSTEM_ERROR

扔 '的std :: SYSTEM_ERROR' 什麼()的一個實例後終止叫: 中止

什麼()返回空字符串,因此不存在錯誤信息。更重要的是,它並不適用於使用gcc 4.5的在線編譯器,但現在它可以工作。你可以在這裏看到它 http://liveworkspace.org/code/f3003d62a758e047a880920c84f1241c 但昨天它拋出了相同的異常(儘管沒有在服務器上做過任何改變)。你知道什麼是問題嗎?

謝謝。

+0

究竟你在用什麼版本? – 2010-10-14 06:44:39

+0

gcc版本4.5.0(GCC) – confucius 2010-10-14 06:48:42

回答

18

嘗試與-lpthread鏈接。出於某種原因,線程庫會在沒有pthread的情況下進行編譯,但會在運行時崩潰。

+2

是的!!!而已!非常感謝。 – confucius 2010-10-15 07:13:54