Qt之线程的开始暂停恢复停止 您所在的位置:网站首页 qthread线程暂停 Qt之线程的开始暂停恢复停止

Qt之线程的开始暂停恢复停止

#Qt之线程的开始暂停恢复停止| 来源: 网络整理| 查看: 265

一.前言 软件开发中,使用到线程就不可避免的要实现线程的暂停恢复停止等操作,总不可能说线程一旦启动就直接运行到结束了,中途不能停止啥的。线程的开始以及结束都比较简单,都有对应的接口可以调用,线程的暂停以及恢复就需要自己手动写个接口,关键在于使用线程锁来实现这个过程。 二.实现过程 1.1先继承QThread实现自己的线程类,声明线程锁变量,以及暂停恢复停止的接口 1.2核心代码(.h)

/* * 线程开始 暂停 恢复 停止 例程 * V1.0 2021-12-27 */ #ifndef THREAD3_H #define THREAD3_H #include #include #include #include #include #include class Thread3 : public QThread { public: Thread3(); ~Thread3() {} public: void close(); void pauseThread(); void resumeThread(); protected: void run(); private: volatile bool stop_; bool pause_; QMutex pauseLock; int i; }; #endif // THREAD3_H

1.3其他说明 增加关键字volatile是为了:提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,就会出现不一致的现象

2.cpp核心代码

#include "Thread3.h" Thread3::Thread3() { stop=false; pause=false; i=0; } void Thread3::close() { stop=true; quit(); wait(); } void Thread3::pauseThread() { qDebug() while(i // 线程锁在业务开始和和结束的地方 pauseLock.lock(); // 具体的业务逻辑 i++; qDebug() qDebug() qDebug()


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有