QT 线程之 QtConcurrent::run()

红太狼 2022-06-05 06:36 496阅读 0赞

用法:
pro 添加 QT += concurrent
头文件 #include <QtConcurrent>

定义线程函数

  1. 全部变量 int t = 0
  2. QFuture<int>funIr
  3. int TestThread::fun1(QString str)
  4. {
  5. while(t<3){
  6. qDebug() <<str<< t++ <<QThread::currentThreadId()<< endl;
  7. QThread::msleep(1000)
  8. }
  9. return 666;
  10. }

在构造函数中调用线程函数

  1. TestThread::TestThread()
  2. {
  3. funIr= QtConcurrent::run(this,&TestThread1::fun1,QString("fun1"));
  4. int i = 0;
  5. while(1){
  6. qDebug() <<"mainThread:"<<i++<<QThread::currentThreadId()<< endl;
  7. QThread::msleep(1000);
  8. }
  9. }

结论:
这里写图片描述

可以看出:fun1() 运行在单独的线程中。也可同时创建多个线程函数进行测试。

说明

  1. 可以用run函数的返回值funIr来控制线程。
  2. 如: funIr.waitForFinished();等待线程结束,实现阻塞。
  3. funIr. isFinished() 判断线程是否结束
  4. funIr,isRunning() 判断线程是否在运行
  5. funIr的类型必须和线程函数的返回值类型相同,可以通过
  6. funIr.result() 取出线程函数的返回值
  7. 缺点,不能直接用信号和槽函数来操作线程函数,eg:当线程函数结束时,不会触发任何信号。

发表评论

表情:
评论列表 (有 0 条评论,496人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Qt线基础

    Qt线程基础 Qt是一个功能强大的跨平台应用程序框架,它提供了丰富的多线程支持,使得在Qt应用程序中使用多线程变得简单和高效。在本文中,我们将介绍Qt中的线程基础知识,并提供

    相关 QT线同步

    线程同步 虽然线程的目的是允许代码并行运行,但有时线程必须停止并等待其他线程。例如,如果两个线程试图同时写入同一个变量,结果是未定义的。强制线程彼此等待的原则称为互斥。它是

    相关 Qt线

    今天学习Qt的多线程,在学习多线程主要是两个方面。一是多线程的基础概念,二是多线程的同步,三是怎么和主线程进行通讯。 三.Qt 的应用程序开始执行的时候,只有一个主线程在运行

    相关 QT线

    QT多线程,QT4.7之前是承继 QThread 的方式,比较简单,而 QT5之后,使用了信号和槽的方式,比较灵活。(版本信息可能有误) 下面是对QT线程信息的注意事项