在Qt中,多个线程使用' emit'发送大量信号,触发很慢。看似有排队机制。有没有什么好方法可以快速触发线路上的信号插槽?
答案 0 :(得分:1)
您所询问的内容称为Qt::DirectConnection
。您需要在connect()
中指定它以保证将立即调用插槽。
使用时:
发出信号时立即调用插槽。插槽在信令线程中执行。
否则,默认的Qt方式称为Qt::AutoConnection
。
如果接收器位于发出信号的线程中,则使用Qt :: DirectConnection。否则,使用Qt :: QueuedConnection。连接类型在发出信号时确定。
您可以在connect()
中指定连接类型:
QMetaObject::Connection QObject::connect(const QObject *sender, const
char *signal, const QObject *receiver, const char *method,
Qt::ConnectionType type = Qt::AutoConnection)
关于这两者之间的差异以及如何使用的非常好的答案是here。