fprintf是線程安全的嗎? The glibc manual似乎是這樣說的,但我的應用程序使用對fprintf()的單個調用寫入文件似乎是混合來自不同進程的部分寫入。glibc是否執行fprintf()線程安全?
編輯:爲了澄清,問題的程序是lighttpd插件,服務器與多個工作線程運行。
看着這個文件,一些寫入操作混在一起。
編輯2:看來我看到的可能是由於lighttpd的的「工作線程」,其實是分開處理的問題:http://redmine.lighttpd.net/wiki/lighttpd/Docs:MultiProcessor
問題
通過運行2個或多個進程在 相同的套接字,你將有更好的 併發,但將有幾個 的缺點,你必須知道的 :
- mod_accesslog可能造成破壞的訪問日誌,以相同的文件被打開兩次,不同步。
- mod_status的將具有Ñ獨立的計數器,對每個 處理一組。
- mod_rrdtool將因兩次接收相同的時間戳而失敗。
- mod_uploadprogress將不顯示正確的狀態。
你在用`fprintf`編寫的文件中觀察到這一點,還是在`stdout`和`stderr`流中觀察了這個? – 2009-02-27 14:41:11