可能是重复的问题:
C语言在Linux上,stdout线程安全吗?
假设 thread1 和 thread2 相似,在完成其任务后,它们都会使用 printf。这样做是否线程安全,或者它们需要以某种方式锁定 printf?
这与标准输出 stdout 有关吗?如果在每个 printf 后执行 fflush(stdout),是否会改变什么?
可能是重复的问题:
C语言在Linux上,stdout线程安全吗?
假设 thread1 和 thread2 相似,在完成其任务后,它们都会使用 printf。这样做是否线程安全,或者它们需要以某种方式锁定 printf?
这与标准输出 stdout 有关吗?如果在每个 printf 后执行 fflush(stdout),是否会改变什么?
POSIX.1和C语言函数用于操作字符流(由指向FILE类型对象的指针表示),要求根据POSIX.1c规定以实现可重入的方式来实现(详见ISO/IEC 9945:1-1996,§8.2)。
注意:某些函数可以是可重入或不可重入的,这取决于它们的参数。
FILE *
)对象的函数应该表现得好像它们在内部使用 flockfile()
和 funlockfile()
来获取这些(FILE *
)对象的所有权。” - R.. GitHub STOP HELPING ICE