可以写和&对于同一个文件描述符,从两个线程并行调用fclose?

时间:2010-09-10 13:53:40

标签: c file io fwrite fclose

fwrite&对于同一个文件描述符,从两个线程并行调用fclose

3 个答案:

答案 0 :(得分:9)

POSIX要求FILE访问是线程安全的,但由于fclose关闭文件并使指针无效,所以没有办法(即它不仅仅是一个规范问题,而是一个基本的API问题,当另一个线程可能仍在访问fclose时,永远无法“修复”或“离开”使用FILE。你需要自己锁定。

答案 1 :(得分:4)

fwritefcloseFILE数据结构进行操作。由于这是一个较大的数据结构,它确实存储的不仅仅是文件描述符,因此答案很糟糕。

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

答案 2 :(得分:-4)

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