我想學習多線程,我有一個簡單的問題。在我發現的大多數例子中,在允許多線程使用它之前關閉標準輸出緩衝區:爲什麼在多線程時關閉標準輸出緩衝區?
setbuf(stdout,NULL);
爲什麼?如果我將它們刪除,代碼也會打印出來!
我想學習多線程,我有一個簡單的問題。在我發現的大多數例子中,在允許多線程使用它之前關閉標準輸出緩衝區:爲什麼在多線程時關閉標準輸出緩衝區?
setbuf(stdout,NULL);
爲什麼?如果我將它們刪除,代碼也會打印出來!
它們可能不會打印出相同的結果 - 當輸出被緩衝時,它可能不會立即顯示,這可能會改變線在線程之間輸出的順序。
關閉緩衝可確保您知道執行語句的順序。
它可以防止緩衝,這意味着您可以更好地理解各種線程什麼時候做什麼。也就是說,在stdout
發生時,你更有可能看到寫入,而不是在將一些數據寫入stdout
之後。
當您將控制檯應用程序的輸出傳送到UI時,執行此操作也很有幫助。