4
使用C++ 11的std ::異步在這個片斷:的std ::異步不併行任務
int foo()
{
::sleep(2);
return 123;
}
int main()
{
future<int> r1(async(foo));
int r2 = foo();
cout << r1.get() + r2 << endl;
return 0;
}
它產生正確的結果,但連續運行兩個Foo的(整個應用程序運行4秒) 。編譯爲: g++ -std=gnu++11 -O2 foo.cc -lpthread
(Ubuntu的12.10 64位,GCC 4.7.2)
請注意,即使G ++支持async'的'語法,它的實現相當不成熟(與MSVC相比)。 –
哦,我明白了......所以答案是,現在是模擬執行? – Cartesius00
[沒有啓動策略的std :: async允許運行時庫選擇是啓動新線程,還是在將來調用get()或wait()的線程中運行任務。](http://stackoverflow.com/a/12510731/179910) –