qt 等待线程结束_c – 停止Qt线程:调用exit()或quit()不会停止线程执行

在main()即主线程中创建了一个QThread.

将一个worker类移动到新线程.该线程执行worker类的’StartThread’方法.

工人线程:

//header file

class Worker : public QObject

{

Q_OBJECT

public:

Worker(QThread* thread);

public slots:

void StartThread();

void EndThread();

private:

QThread* m_pCurrentThread;

};

// source file

#include "QDebug"

#include "QThread"

#include "worker.h"

Worker::Worker(QThread* thread)

{

m_pCurrentThread = thread;

}

void Worker::StartThread()

{

qDebug() << " StartThread";

while(true)

{

QThread::msleep(1000);

qDebug() << " thread running";

static int count = 0;

count++;

if(count == 10)

{

break;

}

if(m_pCurrentThread->isInterruptionRequested())

{

qDebug() << " is interrupt requested";

// Option 3:

m_pCurrentThread->exit();

}

}

qDebug() << "StartThread finished";

}

void Worker::EndThread()

{

qDebug() << "thread finished";

}

Main.cpp的

#include

#include "worker.h"

#include "QThread"

#include "QObject"

#include "QDebug"

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

QThread* thread = new QThread();

Worker* workerObj = new Worker(thread);

QObject::connect(thread,

SIGNAL(started()),

workerObj,

SLOT(StartThread()));

QObject::connect(thread,

SIGNAL(finished()),

workerObj,

SLOT(EndThread()));

workerObj->moveToThread(thread);

thread->start();

thread->requestInterruption();

QThread::msleep(2000);

qDebug() << "terminate thread";

if(thread->isRunning())

{

// Option 1,2 exit() / quit() used but got same output

thread->exit();

qDebug() << "wait on thread";

thread->wait();

}

qDebug() << " exiting main";

return a.exec();

}

现在,在’StartThread’完成并正常退出线程之前,我想从主线程中停止线程.

用过的,

> thread-> exit()

并在主线程中等待(thread-> wait()).

> thread-> quit()

并在主线程中等待(thread-> wait()).

>’StartThread’中的exit()

预期:

一旦从主线程调用exit()/ quit(),线程执行就应该停止.

实际:

在所有三个实例中,线程一直在运行,完成’StartThread’方法并正常退出.尽管没有调用exit()/ quit().

输出:

StartThread

thread running

is interrupt requested

terminate thread

wait on thread

thread running

is interrupt requested

thread running

is interrupt requested

thread running

is interrupt requested

thread running

is interrupt requested

thread running

is interrupt requested

thread running

is interrupt requested

thread running

is interrupt requested

thread running

is interrupt requested

thread running

StartThread finished

thread finished

exiting main

是否可以在主线程需要时停止/处理线程?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rcnn spp_net hcp

rcnn开创性工作&#xff0c;但是计算时间太长&#xff0c;重复计算太大。 spp_net将重复计算避免了。 hcp是yan shuicheng那边的&#xff0c;是用bing生成regions&#xff0c;然后用normalized cut将这些regions进行聚类&#xff0c;然后将聚类后剩下较小数量的regions进cnn&am…

eslint语法报错解决

今天将之前一个项目加入了eslint&#xff0c;发现很多变报错&#xff0c;但是反复检查自己代码是没有错误的&#xff0c;根据报错信息可知是某些api在eslint语法中使用不规范导致&#xff0c;大概总结如下&#xff1a; 1.setup中接收props 报错&#xff1a;Getting a value f…

MediaRecorder录像怎么旋转呀?

问题描述最近做的项目摄像头是跟手机按90度安装的&#xff0c;用MediaRecorder录像还是按摄像头的方向而不是手机的方向&#xff0c;录出来的是90度旋转的&#xff0c;试了很多方法都不管用。MediaRecorder.setOrientationHint没有效果&#xff0c;在底层AuthorDriver那都没有对…

简述python定义中的五个要点_Python基础知识复习

1.切片操作三个参数的意义&#xff1a;切片是Python序列的重要操作之一&#xff0c;适用于列表、元组、字符串、range对象等类型。切片使用2个冒号分隔的3个数字来完成&#xff0c;第一个数字表示切片开始位置(默认为0)&#xff0c;第二个数字表示切片截止(但不包含)位置(默认为…

matlab畸变校正代码_关于OpenCV中的去畸变

在opencv中&#xff0c;有关图像或像素点&#xff08;角点&#xff09;去畸变的函数有cv::undistort()&#xff0c;cv::getOptimalNewCameraMatrix()&#xff0c;cv::initUndistortRectifyMap()&#xff0c;remap()&#xff0c;cv::undistortPoints()。其中undistort可以直接对…

redis数据库简介、redis下载及安装(win64位)、node操作redis、redis实现短信校验注册接口

redis简介&#xff1a; 1:内存数据库,同时也能够保存数据到磁盘&#xff1b; 2:比其他的内存数据库有着更多的数据类型&#xff1a; 列表,集合,排序集合,哈希表等; 3:主从结构&#xff1a;数据可以备份到从服务器&#xff1b; 4: Redis数据操作速度快; 5:所有的操作都是原…

go func()和 go_Go的泛型真的要来了—如何使用以及它们是怎么工作的

点击上方蓝色“Go语言中文网”关注我们&#xff0c;领全套Go资料&#xff0c;每天学习 Go 语言你没看错&#xff0c;这里讲的就是 Go 中的泛型。只不过还没有正式发布&#xff0c;是基于草案设计的&#xff0c;已经是实现了可运行的版本。所以&#xff0c;泛型到来真的不远了&a…

bios设置_bios怎么设置显存 bios设置显存教程【图文】

有些用户可能会发现打开电脑系统信息窗口显示的内存容量与实际容量不同&#xff0c;例如系统内存显示4G&#xff0c;可用3.73G。那么不可用的那部分内存到哪里去了呢?其实是被集成显卡占用当做显存使用了。下面我们就通过 bios设置显存 来调整占用内存容量的大小&#xff0c;我…

4变形物体_Houdini基础(二)曲线变形物体

设想&#xff1a;先从二维上来看直角坐标系。物体是由x&#xff0c;y两个轴向的数据组成的。少了其中一组数据物体就只能是分布在单一轴向上的点。单独保留物体x、y情况下的点分布情况现在将x、y加起来&#xff0c;可见在三维空间中形成了一个平面。仅有x、y坐标的物体从目前的…

node.js+mysql实现分库分表存查数据:

node.jsmysql实现分库分表&#xff1a; 1.分库分表使用场景&#xff1a; 互联网项目中常用到的关系型数据库&#xff0c;如MySQL&#xff0c;随着用户和业务的增长&#xff0c;传统的单库单表模式难以满足大量的业务数据存储以及查询&#xff0c;单库单表中大量的数据会使写入…

Linux 添加新硬盘

1.识别分区和硬盘 在 /dev/ 目录下找到新的硬盘&#xff0c;sda 为本地硬盘&#xff0c;sda1、sda2.. 为分区&#xff0c;sdb 就是新添加的硬盘&#xff0c;如: [rootwusuyuan ~]# ls -ltr /dev/sd*brw-rw----. 1 root disk 8, 0 11月 14 14:12 /dev/sdabrw-rw----. 1 root di…

mybatis 映射成多个list_SSM:Mybatis架构与原理

MyBatis功能架构设计功能架构讲解&#xff1a;我们把Mybatis的功能架构分为三层&#xff1a;API接口层&#xff1a;提供给外部使用的接口API&#xff0c;开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。数据处理层&…

10无法勾选隐藏的项目_Excel超好用的隐藏操作,不可多得

日常工作中&#xff0c;表格数据的展示与隐藏也是有大学问的&#xff0c;为了表格更加简洁明了、美观大气&#xff0c;实用的隐藏技巧就派上用场了。且听小翼慢慢分享~1、隐藏行列方法1&#xff1a;选中目标区域&#xff0c;右击鼠标选择“隐藏”即可。如图&#xff1a;方法2&a…

python程序题斐波那契数列_Python编程题9--斐波那契数列

题目1 已知一个数列&#xff1a;1、1、2、3、5、8、13、……&#xff0c;其规律为从第3项开始&#xff0c;每一项都等于其前两项的和&#xff0c;这个数列就是斐波那契数列。 请求出符合斐波那契数列规律的第11项。 代码实现--非递归 def fib_show(n): a, b 0, 1 while n >…

cocos2d-x,求世界坐标

老版: http://user.qzone.qq.com/350479720/blog/1384483239 一&#xff0c;求node的世界坐标。因为node的contentSize为0&#xff0c;局部坐标原点与node重合。所以求起来简单。下面方法都对&#xff1a;1&#xff0c;node->getParent()->convertToWorldSpace(node->…

pdf会签_跟我们做流程管理.pdf

跟我们做流程管理跟我们做流程管理——向管理要效益讲师简介陈立云 先生• AMT 高级咨询经理& 专家讲师• 暨南大学管理学院MBA教育中心校外导师• 著有畅销书 《跟我们做流程管理》&#xff0c;得到用户广泛好评• 曾先后在华为技术、美的电器、佳杰科技担任流程管理专家/…

python爬虫知乎图片_python爬虫(爬取知乎答案图片)

python爬虫&#xff08;爬取知乎答案图片&#xff09; 1.⾸先&#xff0c;你要在电脑⾥安装 python 的环境 我会提供2.7和3.6两个版本的代码,但是本⽂只以python3.6版本为例。 安装完成后&#xff0c;打开你电脑的终端&#xff08;Terminal&#xff09;执⾏以下命令&#xff1a…

HTML5简略介绍

今天要说下 HTML5特有的一个元素 canvas &#xff0c;旨在让web页面上作矢量图不需要在依靠flash或是其他插件&#xff0c;在网页上使用canvas元素时&#xff0c;它会创建一块矩形区域&#xff0c;默认300*150&#xff0c;当然也是可以自定义的。Canvas中的坐标是从左上角开始的…

我的世界java和基岩版哪个好玩_我的世界:Java版本好玩还是基岩版好玩?老玩家看完后沉默了...

MC刚开始是在国外风靡了起来&#xff0c;传到中国的时候MC已经火了很久了&#xff0c;这时候外国已经出现了很多玩MC十分厉害的大神和主播&#xff0c;而在国外也有超多的服务器&#xff0c;其中有号称最强的原版生存服务器Scicraft&#xff0c;而在版本方面MC其实算下来大概有…

SQL Server简介

SQL Server是微软的一款关系型数据库。某些平台吹得天花烂坠&#xff0c;今天第一次在自己的项目中使用了下&#xff0c;感觉不是那么好&#xff0c;特别是SQL语句的支持度还是很欠缺&#xff0c;如limit等都不支持&#xff0c;还有特别单双引号都是需要特别注意的,下面是SQL S…