gpt4 book ai didi

c++ - QFile读取超时

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:21:49 26 4
gpt4 key购买 nike

我的应用程序需要从 nfs 挂载点读取文件。我正在使用 QFile::read(BUFFER_SIZE);,它按预期工作。问题是,当 nfs 卸载(不规则的网络问题)时,此 QFile::read() 永远不会超时导致应用程序挂起。请问有什么明智的解决方案吗?

谢谢。

最佳答案

您可以使用继承自QIODeviceQFile::bytesAvailable (),它返回可供读取的字节数。在 while 循环中等待,直到字节可用或经过几秒钟:

QFile file("file.dat");
file.open(QIODevice::ReadOnly);

QElapsedTimer timer;
timer.start();

while(file.bytesAvailable()<BUFFER_SIZE || timer.nsecsElapsed()<3e9)
qApp->processEvents();

QByteArray array
if(file.waitForReadyRead())
{
array = file.read(BUFFER_SIZE);
}

在这里它会等待 3 秒让数据准备好。耗时由 QElapsedTimer 测量。如果 BUFFER_SIZE 字节在超时后不可用,那么它将继续而不会挂起。

关于c++ - QFile读取超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25063508/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com