2011-02-18 7 views
1

QRunnable::run() 내에서 신호를 방출하고 있습니까? QRunnable에 의해 처리 된 이미지를 내 GUI 스레드에 알릴 필요가 있습니다. 이미 작업이있는 동안 새로운 작업을 풀에 추가 할 수 있어야하므로 QThreadPool/QRunnable을 사용하고 있습니다. 나는 이것을 QtConcurrentQFutureWatcher으로하기가 어렵다고 생각합니다.QRunnable에서 신호 또는 이벤트를 내 보냅니다.

QRunnablerun()에 생성 된 QObject을 사용하여 QObject 대상에 연결하고 신호를 방출합니다.

QRunnable에서 발광하는 것이 좋지 않은 경우 거기에서 이벤트를 게시 할 수 있습니까?

답변

4

예, 신호 및 이벤트 게시는 모두 스레드로부터 안전하기 때문에 QRunnable::run()에서 수행하는 것이 좋습니다. 신호와 이벤트를 올바르게 처리하려면 QObject가 올바른 스레드 선호도를 가져야합니다. 자세한 내용은 Threads and QObjects을 참조하십시오.

+0

내 혼란은 신호와 이벤트가 스레드가 작동하기 위해 짝수 루프를 필요로한다는 인상 때문이라고 생각합니다. QThreadPool 스레드가 자체 루프를 가지고 있다면 Qt 문서에 언급이 없습니다. 아니면 이벤트 루프는 수신에만 필요합니까? –

+3

예, 이벤트 루프는 다른 스레드의 신호를 수신하는 QObject에만 필요합니다. – baysmith

관련 문제