我正在编写一些使用libonion库的东西,这个库是多线程的,我只是想知道如何检测声明的任何文件指针当前是否正在被任何其他线程读取。
(基本上,我想要创建手动处理的临时文件,如果没有人从这些文件中读取,就将其删除。)
发布于 2012-04-29 18:05:58
文件指针只是指向文件资源的指针,而其他线程是否正在读取它不能通过查看指针来确定。您可能需要在文件指针旁边声明互斥锁和全局锁计数。当任何线程打算读取它时,它都可以获得互斥锁上的共享锁,增加锁计数,当线程不打算进一步读取文件时,在减少锁计数后释放锁计数。
您可以查询此锁计数,以查看该值是否为零,在这种情况下,您可以安全地释放它。
还要注意,由于这个锁计数是全局的,并且您可能会处于竞争状态,所以读取和更新锁计数变量应该是独占的。
https://stackoverflow.com/questions/10374376
复制相似问题