0

QFile-pointer同じファイルを指している 2 つがあり、それらは異なるスレッドに属しています。1 つはファイルにデータを書き込み、もう 1 つは読み取ります。しかし、読み取りまたは書き込みの操作を 1 つだけ実行したいと考えています。

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

別の言い方をすれば、ファイルが開いているかどうかを確認する方法は?

私はテストしfile.isOpen()ますか?うまくいきません。どうやってやるの?

4

1 に答える 1

2

isOpen を使用して、別のスレッドが同じファイルを開いているかどうかを確認しようとしているように思えます。AFAIK isOpen は、他の QFile インスタンスではなく、現在の QFile インスタンスにファイルが開いているかどうかを示すだけです。

異なるスレッドが同じファイルを読み書きするのを防ぐことができる唯一の方法は、ファイルをロックすることです。

Qt に、OS に依存する API を掘り下げることなくこれを行う方法があるかどうかはよくわかりません。

于 2012-10-07T07:44:07.240 に答える