首页 > 解决方案 > 从不同线程和同一个线程调用 QObject 方法的首选方式

问题描述

如果我的应用程序是多线程的,我想从不同的线程 (Qt::QueuedConnection) 调用 QObject 方法,如果我的应用程序在单个线程上运行,我想从同一个线程 (Qt::DirectConnection) 调用 QObject 方法。

我发现它可以通过两种方式实现 1) 信号/插槽 2) 使用 Qt::AutoConnection 的 QMetaObject::invokeMethod,但我想知道哪个是首选的,它们之间是否有任何性能差异?

  1. 信号/插槽 Qt::AutoConnection:

信号/槽方式

  1. QMetaObject::invokeMethod Qt::AutoConnection:

在此处输入图像描述

已经有一个使用信号/插槽方式完成的现有代码库,但是很难阅读。是否值得用 QMetaObject::invokeMethod 重构它?

函数参数也可以是自定义类型。

标签: multithreadingqtslot

解决方案


推荐阅读