如何在Qt中进行异步文件IO操作?

3
我想知道如何在Qt中实现异步文件IO?这在原始Qt中是否可行,还是需要使用其他库(例如libuv)来实现这样的功能?我看了QDataStream,但即使它是一个“流”,它也不是无阻塞的。我想自定义一个使用内部libuv的QIODevice,然后可以与QDataStream一起使用,但不确定从哪里开始。有什么想法吗?
感谢提供任何帮助。

在另一个线程中进行同步IO? - alxx
我认为他想要的是一个双向I/O端口。 - Lwin Htoo Ko
1个回答

3

我会实现一个线程来处理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&)));
   ....
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接