intel tbb 和 Qt 线程池对比

问题描述 投票:0回答:1

我正在开发一个具有多线程的 Qt 应用程序。 我使用划分我的任务并将它们放入 Qt 线程池中。 但后来我发现了intel tbb,它也是一个专业的多线程库

我喜欢 intel tbb 中提供的并发容器,但我想知道 Qt 本机线程池库是否与 Qt GUI 设计更兼容。

Aso,我尝试使用 Qt 线程池和 intel tbb 来实现我的任务,但在运行时看不到太大的不同。

那么开发Qt GUI时更推荐哪一个?

c++ qt tbb
1个回答
0
投票

如果您需要 Qt 事件循环来接收事件,请使用 QThread,并“正确”使用它(不要子类化

QThread
)。否则,请使用最适合您需要的东西。混合不是问题,就像一般的线程一样是一个问题:你必须知道你在做什么。


对于 Qt,发出信号和发布事件通常是线程安全的,除非你做了愚蠢的事情。

QObject
实例只能与 Qt Thread 具有线程关联性,这意味着该线程的 Qt 事件循环向其传递事件和排队信号。另请注意,这与 GUI 线程中的情况相同:如果阻止事件循环,事件就会停止。

QObject
相关方法通常不是线程安全的,除非明确说是/写成是。如果您发现您正在从“错误”线程调用
QObject
子类方法,最好不要这样做。例如,您可能需要拆分类、通过事件循环调用方法,或者根本不使用 QObject。

© www.soinside.com 2019 - 2024. All rights reserved.