Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用多线程的 libonion 库编写一些东西,我只是想知道您将如何检测声明的任何文件指针当前是否正在被任何其他线程读取。
(基本上我想创建手动处理的临时文件,如果没有人再读它们,它们就会被删除。)
文件指针只是指向文件资源的指针,仅通过查看指针无法确定是否有其他线程正在读取它。您可能希望在文件指针旁边声明一个互斥锁和一个全局锁计数。当任何线程打算读取它时,它可以获得互斥锁上的共享锁,增加锁计数并在线程不打算进一步读取文件时在减少锁计数后释放它。
您可以查询此锁定计数以查看该值是否为零,在这种情况下您可以安全地释放它。
另请注意,由于此锁定计数是全局的,并且您最终可能会处于竞争状态,因此应以独占方式读取和更新锁定计数变量。