c - 检测当前是否正在读取文件

标签 c file-io

我正在利用 libonion 库(多线程)编写一些内容,我只是想知道如何检测声明的任何文件指针当前是否正在被任何其他线程读取

(基本上我想创建手动处理的临时文件,如果没有人再读取它们,它们就会被删除。)

最佳答案

文件指针只是指向文件资源的指针,仅通过查看指针无法确定是否有其他线程正在读取它。您可能需要在文件指针旁边声明一个互斥体和一个全局锁定计数。当任何线程打算读取该文件时,它可以获得互斥锁上的共享锁,增加锁计数,并在线程不打算进一步读取该文件时减少锁计数后释放它。

您可以查询此锁定计数以查看该值是否为零,在这种情况下您可以安全地释放它。

另请注意,由于此锁定计数是全局的,并且您可能最终会陷入竞争状态,因此应专门读取和更新锁定计数变量。

关于c - 检测当前是否正在读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10374376/

相关文章:

python - 使用多段三次贝塞尔曲线和距离以及曲率约束逼近数据

c - 为什么使用文本编辑器创建的文件比预期多了一个字节?

java - 如何从 ByteArrayOutputStream 创建 java.io.File?

C:同一个文件一个读指针,一个更新指针

c - C 中的函数 strtok() 和混合变量类型

气球排序的复杂性

用C语言计算给定年份中给定日期的总数(即星期日或星期一等)

c - 在困惑中,我们可以从 table_layout 中删除所有参与者吗?

c# - 'File.Open()' 和 'new FileStream()' 之间的区别

使用原始二进制数据对 np.ndarray 进行 Python3 管道 I/O 失败