这与现有问题类似但又有些不同。假设我有许多线程打开同一个文件,但它们都执行自己的 fopen 并维护自己的 FILE 指针。 a) 如果 fwrite 调用有自己的 FILE 指针,是否有必要锁定它们? b) 如果有必要,围绕 fwrite 进行锁定是否足够,或者它们是否可能在不同时间刷新并在刷新时最终混合在一起?如果是,锁定 fwrite 然后 fflush 会覆盖它吗?
最佳答案
这个问题无法在编程语言的上下文中得到回答。就编程语言而言,这些文件句柄是完全独立的对象,您对其中一个所做的任何操作都不会影响另一个。
问题在于操作系统——它能否同时处理对同一底层文件的多个写入操作。换句话说,那些写入是原子的。我不能说所有这些,但是在 Linux 中,例如,小于 PIPE_BUF
大小的写入是原子的。
关于c++ - fopen 和 fwrite 从多个线程到同一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48101799/