在 QT5 中,我需要创建至少 20 个 QThread
In QT5 I need to create at least 20 QThread
在QT5中,我需要创建至少20个线程。
方法应该是什么?
目前我正在使用QtConcurrent::run
来创建线程,但一次只有四个线程在运行。
幸运的是,QtConcurrent
和线程背后没有任何魔力,因此逻辑上一次运行通常与一次实际运行不同,您不能期望看到它们中的N
一次运行每个N
,如果仅仅是因为您的机器上有 M
个内核,或者您依赖于底层的线程池。
特别是,如果您查看 QtConcurrent
的文档,您会发现:
QtConcurrent 根据可用的处理器内核数量自动调整使用的线程数。
关于您找到的 run
成员方法:
QFuture<T> QtConcurrent::run(Function function, ...)
它相当于:
QtConcurrent::run(QThreadPool::globalInstance(), function, ...);
事实上,它指出它:
在单独的线程中运行函数。该线程取自全局 QThreadPool。请注意,函数可能不会立即运行;函数仅在线程可用时运行。
有关更多详细信息,您可以查看QThreadPool
的文档。
特别是,有趣的是成员方法idealThreadCount
,其文档指出:
返回可在系统上运行的理想线程数。这是通过查询系统中实际和逻辑处理器内核的数量来完成的。
另请注意,您可以通过QThreadPool
的成员方法setMaxThreadCount
设置线程池使用的最大线程数。
就是这样,非常简单,我们确实会记录下来。
因此,您实际上无法保证您的线程一次将一起运行。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 试图在visual studio上用C++创建一个桌面应用程序
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何在C++20中创建模板别名的推导指南
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 如何在qthread上创建QTCPSERVER,然后从主线程中将其停止
- 在 QT5 中,我需要创建至少 20 个 QThread
- 带有插槽和信号的QThread似乎不会创建新的线程
- QThread,在线程上创建GUI小部件元素
- 使用 Qthread-Qt5 创建新线程
- 如何创建QThread块并等待从主线程调用的函数返回值?
- 如何连续写入在QThread中创建的文本文件
- 获取创建QObject的QThread