2010-12-04 52 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

相关问题