【发布时间】:2015-11-19 13:54:15
【问题描述】:
我在 Windows 7 上使用 Qt5。
在我当前的项目中,我打开一个二进制文件,以便用来自 TCP 套接字的数据填充它。
通常,在填充文件后,我将其关闭,另一个应用程序将读取此二进制文件以进行进一步处理。
好吧,问题是:写入操作大约需要 4-5 秒(甚至更多),所以我需要找到一种方法阻止其他应用程序从二进制文件中读取,直到文件完全填充...
下面是代码(但我想它不会有太大帮助):
int error = 0;
unsigned long dataLength;
char dataBuffer[1500];
QFile localFile("datafile.bin");
//
localFile.open(QIODevice::WriteOnly);
while(error == 0)
{
error = readSocket(dataBuffer, &dataLength);
if(error == 0)
{
localFile.write(dataBuffer, dataLength);
}
else
{
error = -1;
}
}
localFile.close();
我正在考虑使用一个临时文件,并在写操作完成后重命名它。
但也许还有另一个更好/更聪明的想法?某种“锁定文件以供阅读”可能......?
【问题讨论】:
标签: qt file concurrency locking read-write