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