多个线程,一次一个读/写

时间:2012-10-07 07:29:04

标签: c++ qt

有两个QFile-pointer指向同一个文件,它们属于不同的线程。一个将数据写入文件,另一个读取。但是我想只进行一次操作,读或写。

if(!this->file->exists()) {
   qDebug()<<"The file is not exists";
}
if(this->file->isOpen()) {
   qDebug()<<"The file is open";
}

让我换一种说法:如何检查文件是否已打开?

我测试file.isOpen()?它不起作用。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

听起来对我来说,你试图使用isOpen来查看另一个线程是否打开了同一个文件。 AFAIK isOpen只是告诉您当前的QFile实例是否打开了文件,而不是其他QFile实例。

我知道能够阻止不同线程读取和/或写入同一文件的唯一方法是使用文件锁定。

不太确定Qt是否有办法这样做而无需深入研究更依赖OS的API。