2010-12-04 49 views
10

可能重複:
stdout thread-safe in C on Linux?在同時運行的線程中調用printf是否線程安全?

說線程1和線程是類似的,在他們的工作他們都printf的結束。它是線程安全還是必須以某種方式鎖定printf?

它與標準輸出有關嗎?如果在每個printf之後執行fflush(stdout)會怎麼樣?它會改變什麼嗎?

+1

請參閱http://stackoverflow.com/questions/467938/stdout-thread-safe-in-c-on-linux – icecrime 2010-12-04 13:18:04

回答

11

的POSIX.1和C語言函數 ,關於字符流操作 (用指針表示到 類型的文件對象)由POSIX.1c需要 在這樣的方式來實現 重入(參見ISO/IEC 9945:1-1996,§8.2)。

Thread-safety and POSIX.1

注:有些功能是可重入或非重入的,這取決於他們的論點。

+8

這些函數是* not *可重入的。它們是線程安全的。有很大的不同。可重入的函數自動地是線程安全的,但如果再次從它們已經運行的同一線程(例如來自信號處理程序)調用,線程安全函數仍可能死鎖(或更糟糕)。 – 2010-12-04 13:37:33

相關問題