gpt4 book ai didi

c - 调用 fclose() 后,该文件多快可用于另一个线程?

转载 作者:IT王子 更新时间:2023-10-29 00:36:01 26 4
gpt4 key购买 nike

我有一个在 Windows 和 Linux 上运行的应用程序。它创建一个文件,写入文件,然后调用 fclose()。经过一段不确定的时间后,文件的名称被发送到另一个线程。另一个线程使用 fopen() 打开文件并读取其内容。

一位用户报告应用程序在 Debian 6 上失败,除非他在打开文件之前创建一个短暂的延迟。

当 fclose() 被调用并返回时,文件通过 fopen() 可用于其他线程的速度有多快?

最佳答案

你的问题有点模棱两可,所以我会尝试回答几种解释。

如果您的问题是在fclose 后多长时间可能再次fopen 文件,答案很简单任何时候,甚至在fclose 之前。 POSIX 不允许文件打开是互斥的;只要不达到系统打开文件限制,就可以多次打开文件。即使您使用的是非标准平台(如 Windows)和伪 POSIX 线程实现,只要 fopen 排在 fclose 之后,您很好,因为底层关闭操作必须在 fclose 返回之前完成。

另一方面,如果您担心一个线程写入的数据可供另一个线程读取的可用性,那么只要您可以在刷新之间建立“先发生”关系(通过 显式) fflush 或作为 fclose 操作的一部分)写入数据并在别处读取,你没问题。任何 pthread 同步函数,例如使用互斥锁或 pthread_join,都足以建立这种关系。

关于c - 调用 fclose() 后,该文件多快可用于另一个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17093359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com