multithreading - 从不同线程和同一个线程调用 QObject 方法的首选方式
问题描述
如果我的应用程序是多线程的,我想从不同的线程 (Qt::QueuedConnection) 调用 QObject 方法,如果我的应用程序在单个线程上运行,我想从同一个线程 (Qt::DirectConnection) 调用 QObject 方法。
我发现它可以通过两种方式实现 1) 信号/插槽 2) 使用 Qt::AutoConnection 的 QMetaObject::invokeMethod,但我想知道哪个是首选的,它们之间是否有任何性能差异?
- 信号/插槽 Qt::AutoConnection:
- QMetaObject::invokeMethod Qt::AutoConnection:
已经有一个使用信号/插槽方式完成的现有代码库,但是很难阅读。是否值得用 QMetaObject::invokeMethod 重构它?
函数参数也可以是自定义类型。
解决方案
推荐阅读
- c++ - 跨 dll 使用时 asio 中的 error_category 不匹配
- python - 为什么我的 x0 设置为 110.0,但生成的图像中的 x 坐标仍然从 0 开始?
- java - Java单元测试 - 没有抛出异常
- android - 更改适配器中项目的视图
- sql-server - 如何将 MS SQL 数据库与 Azure Databricks 连接并运行命令
- android - osmdroid 定义一个按钮返回初始中心
- c - cs50 week3算法tiedman排序对问题
- java - 读取 XML 文件 - Eclipse
- javascript - Autotable willDrawCellHook
- python - 有什么方法可以提高去噪自编码器的性能?