我想知道如何在Qt中实现异步文件IO?这在原始Qt中是否可行,还是需要使用其他库(例如libuv)来实现这样的功能?我看了QDataStream,但即使它是一个“流”,它也不是无阻塞的。我想自定义一个使用内部libuv的QIODevice,然后可以与QDataStream一起使用,但不确定从哪里开始。有什么想法吗?
感谢提供任何帮助。
感谢提供任何帮助。
我会实现一个线程来处理I/O。您可以将适当的信号/槽连接到主线程和I/O线程之间,以便从主线程“调用”I/O。您可以将要读取/写入的数据作为参数传递给信号。就像这样:
class FileIOThread : public QThread
{
public:
void run();
public slots:
void writeData(QByteArray &)
void readData(QByteArray &)
};
class MyClass
{
private:
FileIOThread m_writerThread;
signals:
void sendData(QByteArray &);
....
};
MyClass::MyClass()
{
connect(this, SIGNAL(sendData(QByteArray&)),
&m_writerThread,SLOT(writeData(QByteArray&)));
....
}