c++ - 如何在 qt 中执行异步文件 io?

标签 c++ qt file-io asynchronous libuv

我想知道如何在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&)));
   ....
 }

关于c++ - 如何在 qt 中执行异步文件 io?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13677834/

相关文章:

c++ - C/C++ 测试框架

c++ - `shared_ptr` 和 `omp parallel firstprivate` 的深拷贝

c++ - Qt 显示超大富文本的最佳方式?

c++ - 如何检查QWidget是否关闭?

C - fwrite - 无法打开文件,因为它包含无效字符

c++ - 如何在 C++ 中使用 fstream 从文件中读取十六进制值?

c++ - Python 列表和 c/c++ 数组

qt - Qt中如何将时间戳转换为日期?

file-io - 从文件中读取的 Applescript 应用程序

python - 将字典输出写入文件 - Python