Как сделать асинхронный файл IO в QT?

Мне было интересно, как добиться асинхронного файла IO в QT? Это даже достижимо в vanilla qt или кому-то нужно использовать другую библиотеку (например, libuv) для достижения чего-то подобного? Я смотрел на QDataStream, но несмотря на то, что это «поток», он не блокирует. Я предполагаю, что одним из решений было бы создание собственного QIODevice, который использует libuv внутри, который затем может быть использован с QDataStream, но не уверен, с чего начать. Есть идеи?

Спасибо за любую помощь.

3

Решение

Я бы реализовал поток, который будет обрабатывать ввод / вывод. Вы можете подключить соответствующие сигналы / слоты, чтобы «вызывать» 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&)));
....
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]