Qt 线程池

news/2025/3/27 12:31:06/

//Qt线程池是一种用于管理线程的工具,可以在多线程应用程序中提高性能和效率。
//以下是Qt线程池的常用方法和一个简单的例子:

//常用方法:

//1. "QThreadPool::globalInstance()":获取全局线程池实例。

//2. "QThreadPool::setMaxThreadCount(int)":设置线程池中线程的最大数量。

//3. "QThreadPool::start(QRunnable*)":将一个任务添加到线程池中执行。

//4. "QThreadPool::waitForDone()":等待线程池中所有任务执行完毕。

//例子:

//cpp
#include <QCoreApplication>
#include <QRunnable>
#include <QDebug>
#include <QThreadPool>

class MyTask : public QRunnable
{
public:
    MyTask(int id) : m_id(id) {}

    void run() override
    {
        qDebug() << "Task" << m_id << "is running in thread" << QThread::currentThreadId();
    }

private:
    int m_id;
};

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QThreadPool::globalInstance()->setMaxThreadCount(4);

    for (int i = 0; i < 10; ++i)
    {
        MyTask *task = new MyTask(i);
        QThreadPool::globalInstance()->start(task);
    }

    QThreadPool::globalInstance()->waitForDone();

    return a.exec();
}
//

//这个例子创建了一个"MyTask"类,继承自"QRunnable",并实现了"run()"方法。
//在"main()"函数中,设置了线程池的最大线程数为4,然后创建了10个"MyTask"对象,
//并将它们添加到线程池中执行。
//最后,调用"waitForDone()"方法等待所有任务执行完毕。


http://www.ppmy.cn/news/346100.html

相关文章

6年软件测试经验,从我自己的角度理解自动化测试

接触了不少同行&#xff0c;由于他们之前一直做手工测试&#xff0c;现在很迫切希望做自动化测试&#xff0c;其中不乏工作5年以上的人。 本人从事软件自动化测试已经近6年&#xff0c;从server端到web端&#xff0c;从API到mobile&#xff0c;切身体会到自动化带来的好处与痛楚…

Maven私服

Maven 私服是一种特殊的远程仓库&#xff0c;它是架设在局域网内的仓库服务&#xff0c;用来代理位于外部的远程仓库&#xff08;中央仓库、其他远程公共仓库&#xff09;。 建立了 Maven 私服后&#xff0c;当局域网内的用户需要某个构件时&#xff0c;会按照如下顺序进行请求…

linux基本功只10个高效学习Linux命令行工具的技巧:Pandoc实战

前言 大家好&#xff0c;又见面了&#xff0c;我是沐风晓月&#xff0c;本文是专栏【linux基本功-基础命令实战】的第65篇文章。 专栏地址&#xff1a;[linux基本功-基础命令专栏] &#xff0c; 此专栏是沐风晓月对Linux常用命令的汇总&#xff0c;希望能够加深自己的印象&am…

从一个git仓库迁移代码到另一个git仓库

如果A是已有仓库&#xff0c;B是新建立的空仓库。&#xff08;如下操作&#xff0c;提交记录也会带到新仓库里&#xff09; 1、在本地拉一下&#xff08;git clone&#xff09;A仓库的代码&#xff0c;或者是 git pull 下最新的代码。 2、git remote # 查看本地连接的有哪些 …

使用braft-editor实现简易版即时写文档并预览的富文本编辑器

最近在看各个富文本编辑库的时候,有点好奇,于是对比了一些,有draft-js,Slate.js。但是这些基本都是英文库,简单demo无法满足需求,比如插入截图和表格,这些复杂结构的数据,实现这些,必须自定义扩展,要想做到这些,通读一遍文档基本是必须,且内含的天坑,估计也是数不…

IDEA 关闭 SonarLint 自动扫描

进入Settings → 搜索 SonarLint → 将Automatically trigger analysis取消勾选 即可。

内网渗透—Linux上线

内网渗透—Linux上线 1. 前言2. 下载插件3. CS配置3.1. 客户端配置3.1.1. 导入插件文件3.1.2. 配置监听 3.2. 服务端配置3.2.1. 导入配置文件 3.3. 生成木马3.3.1. 修改cna文件3.3.2. 修改后效果 3.4. 执行木马 1. 前言 默认情况下CS是不支持上线Linux的&#xff0c;只支持上线…

java集合详解(入门篇)

文章目录 简介CollectionListArrayListLinkedListVector SetHashSetLinkedHashSetTreeSet MapHashMapLinkedHashMapTreeMap 简介 Java中的集合框架大类可分为Collection和Map&#xff1b;两者的区别如下&#xff1a; Collection是单列集合&#xff1b;Map是双列集合 Collecti…