我正在利用 libonion 库(多线程)编写一些内容,我只是想知道如何检测声明的任何文件指针当前是否正在被任何其他线程读取。
(基本上我想创建手动处理的临时文件,如果没有人再读取它们,它们就会被删除。)
最佳答案
文件指针只是指向文件资源的指针,仅通过查看指针无法确定是否有其他线程正在读取它。您可能需要在文件指针旁边声明一个互斥体和一个全局锁定计数。当任何线程打算读取该文件时,它可以获得互斥锁上的共享锁,增加锁计数,并在线程不打算进一步读取该文件时减少锁计数后释放它。
您可以查询此锁定计数以查看该值是否为零,在这种情况下您可以安全地释放它。
另请注意,由于此锁定计数是全局的,并且您可能最终会陷入竞争状态,因此应专门读取和更新锁定计数变量。
关于c - 检测当前是否正在读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10374376/