Multithreading 从不同线程和相同线程调用QObject方法的首选方法

Multithreading 从不同线程和相同线程调用QObject方法的首选方法,multithreading,qt,slot,Multithreading,Qt,Slot,如果我的应用程序是多线程的,我想从另一个线程(Qt::QueuedConnection)调用QObject方法;如果我的应用程序在单个线程上运行,我想从同一个线程(Qt::DirectConnection)调用QObject方法 我发现它可以通过两种方式实现:1)信号/插槽2)QMetaObject::invokeMethod使用Qt::AutoConnection,但我想知道哪种方法更可取,它们之间有性能差异吗 信号/插槽Qt::自动连接: QMetaObject::invokeMethod

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

我发现它可以通过两种方式实现:1)信号/插槽2)QMetaObject::invokeMethod使用Qt::AutoConnection,但我想知道哪种方法更可取,它们之间有性能差异吗

  • 信号/插槽Qt::自动连接:
  • QMetaObject::invokeMethod Qt::自动连接:
  • 现有的代码库是通过信号/插槽方式完成的,但很难读取。是否值得使用QMetaObject::invokeMethod对其进行重构?


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

    我很好奇为什么您会发现信号/插槽比QMetaObject::invokeMethod更难读取?除非绝对必要,否则我永远不会使用invokeMethod。我很好奇为什么你会发现信号/插槽比QMetaObject::invokeMethod更难读取?除非绝对必要,否则我永远不会用invokeMethod。