Multithreading 从QRunnable发出信号或发布事件

Multithreading 从QRunnable发出信号或发布事件,multithreading,events,qt,threadpool,signals-slots,Multithreading,Events,Qt,Threadpool,Signals Slots,在QRunnable::run()内部发出信号是正确的做法吗?我需要通知我的GUI线程,QRunnable处理的图像已经完成。我正在使用QThreadPool/QRunnable,因为我需要能够在池中已有任务时向池中添加新任务。我发现使用QtConcurrent和QFutureWatcher很难做到这一点 QRunnable正在使用在run()中创建的QObject连接到目标QObject并发出信号 如果从QRunnable发出不是一件好事,那么可以从那里发布事件吗?是的,在QRunnable:

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

QRunnable
正在使用在
run()
中创建的
QObject
连接到目标
QObject
并发出信号


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

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

我认为我的困惑是因为给人的印象是,信号和事件需要线程有一个均匀的循环才能工作。Qt文档中没有提到QThreadPool线程是否有自己的循环。或者事件循环仅用于接收?是,事件循环仅用于QObject从其他线程接收信号。