【问题标题】:How to do async file io in qt?如何在qt中做异步文件io?
【发布时间】:2012-12-03 05:48:08
【问题描述】:

我想知道如何在qt中实现异步文件io?这甚至可以在 vanilla qt 中实现,还是有人需要使用另一个库(例如 libuv)来实现这样的事情?我在看 QDataStream 但即使它是一个“流”,它也不是非阻塞的。我想一种解决方案是制作一个在内部使用 libuv 的自定义 QIODevice,然后可以与 QDataStream 一起使用,但不确定从哪里开始。有什么想法吗?

感谢您提供的任何帮助。

【问题讨论】:

  • 另一个线程同步IO?
  • 我认为他想要的是一个双向 I/O 端口。

标签: c++ qt file-io asynchronous libuv


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多