4

如果fwrite&fclose从两个线程并行调用相同的文件描述符会发生什么?

4

3 回答 3

9

POSIX 要求FILE访问是线程安全的,但由于fclose关闭文件并使指针无效,因此没有办法(即,这不仅仅是规范问题,而是永远无法“修复”或消失的基本 API 问题)fclose当另一个线程可能正在访问FILE静止时使用。您需要自己进行锁定。

于 2010-09-10T16:14:47.823 回答
4

fwrite并对数据结构fclose进行操作。FILE由于这是一个较大的数据结构,它存储的不仅仅是文件描述符,答案是坏事。

除非您确保使用互斥锁进行原子操作,否则不要这样做。

于 2010-09-10T14:01:30.177 回答
-4

对于这种情况,您需要定义方法的优先级。您可以使用“同步”控制方法。

于 2010-09-10T14:05:04.647 回答