簡體   English   中英

C ++ 11線程分離

[英]C++11 thread detach

這個設置

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();
}

我按Enter鍵之前沒有輸出(getchar返回並且程序結束,但我可以看到輸出一會兒)。 但是,當使用foo中的out注釋行時,輸出將直接顯示。 (即使在foo返回之后。)我正在使用VS11測試版。 根據標准,這里需要哪種行為?

"\\n"不刷新輸出緩沖區。 您需要使用std::endl來刷新緩沖區。

void run()
{
    while (true)
    {
        std::cout << "Hello, Thread!"<<std::endl;
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }
}

您可以嘗試使用std::flush手動刷新cout緩沖區

我想這是因為你正在使用std :: cout,whick是緩沖的。 嘗試使用std :: cerr。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM