我想知道如何在qt中实现异步文件io?这甚至可以在 vanilla qt 中实现,还是有人需要使用另一个库(例如 libuv)来实现这样的事情?我在看 QDataStream 但即使它是一个“流”,它也不是非阻塞的。我想一种解决方案是制作一个在内部使用 libuv 的自定义 QIODevice,然后可以与 QDataStream 一起使用,但不确定从哪里开始。有任何想法吗?
感谢您提供的任何帮助。
我想知道如何在qt中实现异步文件io?这甚至可以在 vanilla qt 中实现,还是有人需要使用另一个库(例如 libuv)来实现这样的事情?我在看 QDataStream 但即使它是一个“流”,它也不是非阻塞的。我想一种解决方案是制作一个在内部使用 libuv 的自定义 QIODevice,然后可以与 QDataStream 一起使用,但不确定从哪里开始。有任何想法吗?
感谢您提供的任何帮助。
我将实现一个处理 I/O 的线程。您可以连接适当的 sig/slots 以将 IO 从主线程“调用”到 IO 线程。您可以将要读取/写入的数据作为参数传递给信号。像这样的东西:
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&)));
....
}