yey*_*man 16
做了一些研究后,我在这个链接中找到了以下内容:
POSIX标准要求C stdio FILE*操作是原子的.符合POSIX的C库(例如,在Solaris和GNU/Linux上)具有内部互斥锁,用于序列化FILE*上的操作.
看起来调用应该是原子的,但这取决于你的平台.在同一个链接中,还有另一段让你认为程序员应该注意:
因此,对于3.0,"多线程安全I/O"的问题必须回答,"您的平台的C库线程是否适用于I/O?" 有些是默认的,有些则不是; 许多提供C库的多个实现,具有不同的线程安全性和效率.作为程序员,您始终需要注意多个线程.
此外,由于您FILE*在两个不同的流程中有两个不同,我认为您别无选择.