`

QThreadPool

    博客分类:
  • Qt
 
阅读更多
#include<QThreadPool>
#include<QDebug>

class HelloWorldTask : public QRunnable
{
public:
    void run()
    {
        qDebug() << "Hello world from thread" << QThread::currentThread();
    }
};

class MyTask : public QRunnable
{
public:
    void run()
    {
        qDebug() << "my task from thread" << QThread::currentThread();
    }
};

int main()
{
    HelloWorldTask *hello = new HelloWorldTask;
    MyTask* myTask = new MyTask;
    MyTask* myTask2 = new MyTask;
    QThreadPool* threadPool = QThreadPool::globalInstance();
    qDebug() << "active thread: " << threadPool->activeThreadCount();
    qDebug() << "expire time out: " << threadPool->expiryTimeout();
    qDebug() << "max thread count: " << threadPool->maxThreadCount();
    // QThreadPool takes ownership and deletes 'hello' automatically
    threadPool->start(hello);
    //threadPool->releaseThread();
    //threadPool->reserveThread();
    threadPool->start(myTask);
    threadPool->start(myTask2);
    if(threadPool->activeThreadCount()>0)
    {
        qDebug() << "active thread: " << threadPool->activeThreadCount();
        threadPool->waitForDone();
    }
}

active thread:  0 
expire time out:  30000 
max thread count:  2 
active thread:  2 
Hello world from thread QThread(0x93d9860) 
my task from thread QThread(0x93d9860) 
my task from thread QThread(0x93d9878) 
分享到:
评论

相关推荐

    Qt 线程池(QThreadPool )的使用

    在Qt框架中,线程池(QThreadPool)是一种高效利用系统资源、管理多线程执行任务的方法。线程池的概念是预先创建一组线程,当有任务需要执行时,线程池会分配一个空闲线程来处理任务,而不是每次都新建线程。这样...

    QThreadPool线程池使用例子源码

    在Qt库中,QThreadPool是一个非常重要的组件,用于管理和调度线程。它是C++多线程编程的一个实用工具,尤其适用于处理短期、并发的任务。QThreadPool线程池允许开发者高效地利用系统资源,避免频繁创建和销毁线程的...

    QThreadPool.7z

    《深入理解Qt库中的QThreadPool》 在Qt库中,`QThreadPool`是一个非常重要的组件,它是线程池(Thread Pool)的实现,为多线程编程提供了强大的支持。线程池是一种有效的资源管理策略,它预先创建了一组线程,当有...

    qt例程-QThreadPool.7z

    《深入理解Qt编程:QThreadPool的使用与优化》 在Qt框架中,QThreadPool是一个非常重要的组件,它是线程池的实现,对于高效利用系统资源、优化多线程编程具有关键作用。本篇将深入探讨QThreadPool的工作原理、使用...

    Qt QThreadPool线程池 Demo

    线程池是什么 QThreadPool 线程池是一种线程使用模式,它管理着一组可重用的线程,可以处理分配过来的可并发执行的任务。 线程池设有最大线程数,可以避免线程数过多会导致额外的线程切换开销。 线程池管理的线程...

    Qt thread pool 线程池样例,信号槽,跨线程 lambda

    首先,Qt的线程池(QThreadPool)是通过`QThreadPool`类提供的。线程池是一种线程管理机制,它可以预先创建一定数量的线程,当有任务需要执行时,线程池会分配一个空闲的线程去处理任务,而不是每次都创建新的线程,...

    QTCPSocket线程池方法

    `),然后创建一个 `MyTask` 的实例,将 `QTcpSocket` 传递给任务,并将任务添加到线程池中(`QThreadPool::globalInstance()-&gt;start(new MyTask(socket));`)。 4. **安全关闭连接**:在任务完成或发生错误时,...

    QT5线程QThread使用示例

    在C++中,创建一个新的线程通常有两种方式:一是继承`QThread`类,二是使用`QRunnable`和`QThreadPool`。本示例采用了第一种方法,即继承`QThread`。这样做允许我们在派生类中重写`run()`函数,该函数将在新线程的上...

    TestQThreadPool.rar

    在Qt库中,QThreadPool是线程管理的核心组件,它允许开发者有效地利用多核处理器的资源,通过异步执行任务来提高程序的并发性能。QThreadPool提供了线程池的概念,即预先创建一组线程,当有任务需要执行时,线程池会...

    QthreadPools.rar

    在本文中,我们将深入探讨如何在Qt框架中利用QThreadPool和QRunnable实现高效的多线程编程。QThread是Qt提供的一种轻量级线程管理工具,而QThreadPool和QRunnable则是构建线程池模型的关键组件。这个名为...

    Qt中三种多线程使用方法

    本工程通过三种不同的方式展示了如何在Qt中使用多线程,它们分别是:继承`QThread`并重写`run`函数、继承`QObject`并调用`moveToThread`以及使用`QThreadPool`进行线程池管理。下面将详细介绍这三种方法。 1. 继承`...

    PyQt5中多线程模块QThread和线程池ThreadPoolExecutor解决PyQt5界面程序执行比较耗时操作无响应问题

    1.资源简介:PyQt5中使用多线程模块QThread解决了PyQt5界面程序执行比较耗时操作时,程序卡顿出现的无响应以及界面输出无法实时显示的问题,采用线程池ThreadPoolExecutor解决了ping多个IP多任务耗时问题。...

    qt线程池的小例子

    - QThreadPool的全局实例:可以通过QThreadPool::globalInstance()获取全局线程池,这是默认的线程池实例,可以处理所有的QRunnable对象。 - QRunnable的生命周期:QRunnable对象不直接与线程关联,而是由线程池管理...

    线程池模块实现

    在Qt框架中,线程池是通过`QThreadPool`类实现的,它提供了方便的方式来管理和调度线程。在本项目中,"线程池模块实现"可能包含一个自定义的线程池类,用于优化应用程序的并发性能,避免了频繁创建和销毁线程的开销...

    qt 线程池实现多线程下载

    `QThreadPool::start()`方法可以启动一个任务,`QThreadPool::globalInstance()`可以获取全局线程池。 3. **限速下载**:Qt的`QNetworkAccessManager`提供了设置网络访问速度限制的功能。通过`QNetworkReply`的`...

    提供Qt中快速多次发射信号与耗时槽函数的链接解决方案

    另一种方法是利用Qt的线程池(QThreadPool)来并发执行耗时的槽函数。这样,每个槽函数都在单独的线程中运行,不会阻塞主线程或其他槽函数。以下是一个简单的例子: ```cpp #include #include &lt;QThreadPool&gt; ...

    Qt 多线程开发使用说明

    在上面的代码中,我们定义了一个继承自 QRunnable 的类 BPrint,并使用 QThreadPool 来实现线程池。在线程池中,我们可以创建多个线程,并使用 start() 函数来启动线程。 使用 QThreadPool 的优势在于可以避免频繁...

    zpserver-master.zip

    这通常通过调用`QThreadPool::globalInstance()-&gt;start()`或`QThreadPool::globalInstance()-&gt;tryStart()`完成,其中参数是任务对象。 3. **信号与槽(Signals & Slots)**:Qt的信号与槽机制是多线程编程中不可或...

    Qt实现线程池开发实例

    QThreadPool是一个全局的线程池,可以管理和调度线程。通过调用`start()`方法,我们可以将任务(一个实现了Runnable接口的对象)提交到线程池,线程池会根据需要自动启动新的线程或者复用已存在的线程来执行任务。 ...

    Qt 之多线程处理多任务

    首先,我们需要理解Qt线程池(QThreadPool)的概念。线程池是一种线程管理机制,它预先创建一组线程,当有任务需要执行时,线程池会自动分配一个空闲线程来执行任务,完成后再返回线程池。这种方式减少了线程创建和...

Global site tag (gtag.js) - Google Analytics