从QRunnable发出信号或发布事件

Ste*_*Chu 2 events qt multithreading signals-slots threadpool

在内部发射信号QRunnable::run()是正确的事吗?我需要通知我的GUI线程处理QRunnable完成的图像。我正在使用QThreadPool/,QRunnable因为当池中已经有任务时,我需要能够向池中添加新任务。我发现使用QtConcurrent和很难做到这一点QFutureWatcher

QRunnable是使用QObject在创建run()连接到目标QObject并发射信号。

如果发出来QRunnable不是一件好事,是否可以从那里发布事件?

bay*_*ith 5

是的,在a中,发出信号和发布事件是很好的事情,QRunnable::run()因为它们都是线程安全的。为了正确处理信号和事件,QObject必须具有正确的线程关联性。有关更多详细信息,请参见线程和QObject

  • 是的,仅对于QObject从其他线程接收信号才需要事件循环。 (4认同)