此設置C++ 11線程分離
void run()
{
while (true)
{
std::cout << "Hello, Thread!\n";
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}
void foo()
{
std::thread t(run);
t.detach();
//std::this_thread::sleep_for(std::chrono::seconds(3));
}
int main()
{
foo();
getchar();
}
沒有給我輸出直到我按回車鍵(返回的getchar和程序結束,但我可以看到一小會兒的輸出)。但是,使用foo中的out註釋行時,會直接顯示輸出。 (甚至在foo返回之後)我正在使用VS11 beta版本。 根據標準,此處需要哪些行爲?
緩存爲每個線程可能的輸出? – dreamlax 2012-03-13 21:19:20
嗯..我試過std :: endl,得到一個斷言,切換行,以便新的線程第一次等待一秒鐘,然後使輸出,嘿,它的作品。滑稽。所以輸出流不能被快速的初始化或者那裏發生了什麼? – cooky451 2012-03-13 21:22:23
我認爲寫入標準輸出和從標準輸入讀取是序列化操作。 – 2012-03-13 21:22:36