此设置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