fwrite
&对于同一个文件描述符,从两个线程并行调用fclose
?
答案 0 :(得分:9)
POSIX要求FILE
访问是线程安全的,但由于fclose
关闭文件并使指针无效,所以没有办法(即它不仅仅是一个规范问题,而是一个基本的API问题,当另一个线程可能仍在访问fclose
时,永远无法“修复”或“离开”使用FILE
。你需要自己锁定。
答案 1 :(得分:4)
fwrite
和fclose
对FILE
数据结构进行操作。由于这是一个较大的数据结构,它确实存储的不仅仅是文件描述符,因此答案很糟糕。
除非确保使用互斥锁进行原子操作,否则不要这样做。
答案 2 :(得分:-4)
对于这种情况,您需要定义方法的优先级。 您可以使用“synchronized”控制方法。