在同时运行的线程中调用printf是否可以安全线程?

j r*_*riv 11 c multithreading pthreads thread-safety

可能重复:
Linux上的C中的stdout线程安全吗?

假设thread1和thread2相似,并且在它们的作业结束时它们都是printf.它是线程安全还是必须以某种方式锁定printf?

它与stdout有关吗?如果在每个printf之后执行fflush(stdout)怎么办?它有什么改变吗?

Hua*_*Lei 11

该对字符流操作的POSIX.1和C语言的函数(用指针表示以文件类型的对象)由POSIX.1c需要在重入实现(见ISO/IEC 9945这样的方式来实现:1- 1996年,§8.2).

请参阅Thread-safety和POSIX.1

注意:某些函数可以是可重入的或不可重入的,具体取决于它们的参数.

  • 这些功能不是*可重入的.它们是线程安全的.有很大的不同.可重入的函数是自动线程安全的,但是如果从它们已经运行的同一线程(例如从信号处理程序)再次调用,则线程安全函数仍然可能死锁(或更糟). (8认同)