温州网站优化排名,百度网页入口官网,永城信息港,上海做网站大的公司有哪些1. 概述
QRunnable是所有runnable对象的基类#xff0c;它表示一个任务或要执行的代码。开发者需要子类化QRunnable并重写其run()函数来实现具体的任务逻辑。而QThreadPool则是一个管理QThread集合的类#xff0c;它帮助减少创建线程的成本#xff0c;通过管理和循环使用单…1. 概述
QRunnable是所有runnable对象的基类它表示一个任务或要执行的代码。开发者需要子类化QRunnable并重写其run()函数来实现具体的任务逻辑。而QThreadPool则是一个管理QThread集合的类它帮助减少创建线程的成本通过管理和循环使用单独的QThread对象来执行任务队列中的任务。每个Qt应用程序都有一个全局QThreadPool对象可以通过调用globalInstance()来访问。
2. 重要方法 QRunnable类 run(): 这是一个纯虚函数需要子类化QRunnable并实现这个函数来定义任务的具体行为。setAutoDelete(bool autoDelete):设置任务执行完成后是否自动删除对象。autoDelete()const:返回任务是否自动删除对象。 QThreadPool类 globalInstance(): 获取全局QThreadPool对象的静态方法。start(QRunnable *runnable, int priority 0): 启动一个新的任务。runnable参数是要执行的任务对象priority参数用于设置任务的优先级。如果runnable的autoDelete属性为true则QThreadPool会在任务执行完毕后自动删除runnable对象。tryStart(QRunnable *runnable): 尝试立即启动一个任务。如果没有可用的线程则此函数不执行任何操作并返回false。waitForDone(int msecs -1): 等待所有任务完成并从线程池中删除所有线程。msecs参数指定了最多等待的毫秒数如果为-1默认值则忽略超时直到最后一个线程退出。activeThreadCount(): 返回当前正在工作的线程数量。maxThreadCount(): 返回线程池允许的最大线程数量。setMaxThreadCount(int maxThreads): 设置线程池允许的最大线程数量。setExpiryTimeout(int expiryTimeout): 设置线程在未使用时到期的超时时间毫秒。默认值是30000毫秒30秒。
#include QCoreApplication
#include QThreadPool
#include QRunnable
#include QDebug
#include QThread// 定义一个QRunnable的子类
class MyTask : public QRunnable
{
public:void run() override{qDebug() MyTask is running in thread: QThread::currentThread();// 在这里执行具体的任务逻辑}
};int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 获取全局QThreadPool对象QThreadPool *threadPool QThreadPool::globalInstance();// 创建一个MyTask对象并启动它MyTask *task new MyTask();threadPool-start(task);// 等待所有任务完成在这个简单示例中我们只有一个任务threadPool-waitForDone();return a.exec();
} 觉得有帮助的话打赏一下呗。。