2012-12-03 5 views
2

qt에서 비동기 파일 io를 얻는 방법을 궁금합니다. 이것은 심지어 바닐라 qt에서 성취 할 수 있습니까 아니면 누군가가 이와 같은 것을 달성하기 위해 다른 라이브러리 (예를 들어 libuv)를 사용해야합니까? QDataStream을보고 있었지만 "스트림"이라 할지라도 비 차단이 아닙니다. 한 솔루션은 libuv를 내부적으로 사용하는 커스텀 QIODevice를 만드는 것이고, QDataStream과 함께 사용할 수 있지만 어디서부터 시작해야할지 모르겠습니다. 어떤 아이디어?qt에서 비동기 파일 io를 수행하는 방법?

제공되는 도움에 감사드립니다.

+0

다른 스레드의 동기 입출력? – alxx

+0

그가 원하는 것은 양방향 I/O 포트 중 하나라고 생각합니다. –

답변

2

I/O를 처리 할 스레드를 구현할 것입니다. 메인 스레드에서 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&))); 
    .... 
} 
관련 문제