c++ qt--线程(一)(第八部分)

c++ qt–线程(一)(第八部分)

一.进程(Process)

在任务管理器中的进程页下,可以看到进程,任务管理器将进程分为了三类,应用、后台进程、window进程

在这里插入图片描述

应用:

打开的正在运行的软件

后台进程:

隐藏在后台,“悄悄”的运行

window进程:

操作系统启动、运行需要依赖的各种服务

1.进程的概念

是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立的基本单元,是应用程序运行的载体

进程是一种抽象的概念,从来没有统一的标准定义

2.进程的组成

进程由程序、数据集合、进程控制块三部分组成

3.进程的4个特征

1.动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生。动态消亡的

2.并发性:任何进程都可以同其他进程一起并发执行

3.独立性:进程是程序进行资源分配和调度的一个独立单元

4.结构性:进程由程序、数据集合、进程控制块三部分组成

4.应用程序和进程间的关系

一个应用程序下的多个进程是树形结构。

PID是进程的唯一标识符,PID最小的数是根节点

二.线程(Thread)

1.线程的概念

cpu能够进行调度、分配、执行、运算的最小的基本单位。是程序执行中一个单一的顺序控制流程,一个进程可以有一个或多个线程,各个线程之间共享进程的内存空间

2.线程的串行,并行和并发

串行:按照顺序。一个执行完再执行下一个

并行:同一个时刻,同时进行

并发:再同一个时间间隔内发生,指相同的时间间隔,交替执行

在单线程下,采用串行的方式执行

大部分操作系统的任务调度是采用轮换时间片的抢占式调度方式,一个线程执行一小段时间后暂停休息并等待着被唤醒,下一个线程被唤醒并开始执行,每个线程交替轮流执行,。线程执行的一小段时间叫做时间片

由于cpu的执行速度非常快,时间片非常短,在各个线程之间快速地切换,给人的感觉就是多个线程在“同时进行”,这就是常说的并发

3.线程的状态

1.新生态:创建出新的线程对象

2.就绪态:创建出线程后,进入就绪态,会将线程添加到就绪队列中,等待分配到cpu时间片,就会进行运行状态

3.运行态:运行态的线程如果时间片用完后,就会再次进入就绪状态,一般来说就绪态和运行态不需要认为参与,由操作系统进行调度,如果遇到sleep、wait、suspend、IO请求时就会进入阻塞态

4.阻塞态(挂起状态):一个正在运行的线程在某些特殊情况下,如被认为挂起或执行好事的I/O操作时,会让出cpu的使用权并暂时中止自己的执行,进入阻塞状态,处于阻塞状态的线程,就不能进入排队队列。只有当引起阻塞的原因被消除后,线程才可以转入就绪状态。当恢复线程,完成IO操作、等到资源,就会进入就绪状态

5.销亡态:线程正常执行结束、因异常退出、被强制终止,该线程结束生命周期

注意:

1.线程必须通过就绪态分配到时间片才能进入运行状态,而不能直接进入运行状态

2.就绪状态无法进入阻塞状态

3.其他状态的线程可直接进入销亡态

三.使用QT创建线程(进一步理解线程)

1.创建一个控制台窗口

在这里插入图片描述

2.创建线程

1.使用的头文件为

#include <windows.h>

2.创建线程

在main.cpp中的mian函数中写下面代码

int n=20;
//创建一个子线程,主线程可以看作是main函数 的执行
HANDLE handle=::CreateThread(nullptr/*使用默认的安全属性*/,//线程的安全属性,返回的是线程句柄,这里我们用线程句柄接一下0//用默认的线程栈大小window(1M),&ThreadProc//线程函数,&n//线程函数传递的参数,0//创建线程后,0:立即执行,CREATE_SUSPENDED:挂起,nullptr//返回线程ID);

3.线程函数

在main.cpp中写下面代码

DWORD (WINAPI/*调用约定*/ ThreadProc) (LPVOID/* void* */ lpThreadParameter){return 0;//表示当前函数正常退出
}

4.通过输出观察两个线程的执行

主线程
int n=20;
//创建一个子线程,主线程可以看作是main函数 的执行
HANDLE handle=::CreateThread(nullptr/*使用默认的安全属性*/,//线程的安全属性,返回的是线程句柄,这里我们用线程句柄接一下0//用默认的线程栈大小window(1M),&ThreadProc//线程函数,&n//线程函数传递的参数,0//创建线程后,0:立即执行,CREATE_SUSPENDED:挂起,nullptr//返回线程ID);//进行一个输入,看主线程与子线程的关系
for(int i=0;i<20;i++){qDebug()<<"--------------------------------主人 睡了"<<i;Sleep(1000);
}
子线程
DWORD (WINAPI/*调用约定*/ ThreadProc) (LPVOID/* void* */ lpThreadParameter){//进行一个输入,看主线程与子线程的关系int n=*(int*)lpThreadParameter;//将void*强转为int*最后取其中的值for(int i=0;i<n;i++){qDebug()<<"仆人在挣钱"<<i;Sleep(1000);}return 0;//表示当前函数正常退出
}

5.线程的挂起、恢复操作(这里对子线程挂起和恢复操作)

主线程

在main.cpp中的mian函数中写下面代码

int n=20;HANDLE handle=::CreateThread(nullptr,0,&ThreadProc,&n/,CREATE_SUSPENDED//这里改为了CREATE_SUSPENDED,挂起,nullptr);for(int i=0;i<20;i++){if(i==3){//返回的是恢复或挂起之前 挂起计数器的值,当挂起计数器的值为0时,线程才能继续运行//挂起几次,就得恢复几次,线程才能继续运行DWORD count=::ResumeThread(handle);//恢复某一个线程运行qDebug()<<"count111   "<<count;}if(i==7){DWORD count=::SuspendThread(handle);qDebug()<<"count222   "<<count;}if(i==10){DWORD count=::SuspendThread(handle);qDebug()<<"count333    "<<count;}if(i==13){DWORD count=::ResumeThread(handle);qDebug()<<"count444    "<<count;}if(i==15){DWORD count=::ResumeThread(handle);qDebug()<<"count555    "<<count;}qDebug()<<"--------------------------------主人 睡了"<<i;Sleep(1000);
}
子线程

在main.cpp中写下面代码

DWORD (WINAPI/*调用约定*/ ThreadProc) (LPVOID/* void* */ lpThreadParameter){//进行一个输入,看主线程与子线程的关系int n=*(int*)lpThreadParameter;//将void*强转为int*最后取其中的值for(int i=0;i<n;i++){qDebug()<<"仆人在挣钱"<<i;Sleep(1000);}return 0;//表示当前函数正常退出
}

6.线程的关闭和退出操作()

定义两个关于退出标志
bool isTreadQuit=false;//退出的标志,这里初始是不退出
bool isAlreadyQuit=false;//告诉主线程退出了,这里初始是不告诉
主线程

在main.cpp中的mian函数中写下面代码

int n=20;//创建第一个线程时也会创建内核对象,这时使用计数默认+1
HANDLE handle=::CreateThread(nullptr,0,&ThreadProc,&n/,0//这里改为了0,立即执行,nullptr);for(int i=0;i<20;i++){qDebug()<<"--------------------------------主人 睡了"<<i;if(i==6){isTreadQuit=true;qDebug()<<"通知子线程退出";break;}//第一种 一直等子线程退出的标记//while(1){//    if(isAlreadyQuit){//         qDebug()<<"收到子线程退出的标记了";//         break;//    }//    Sleep(1000);//}//第二种,设置等待时间等子线程退出,这里设置的是7秒DWORD flag=WaitForSingleObject(handle,7000);//这里的参数单位是毫秒if(flag==WAIT_OBJECT_0){//在设定的等待时间内,子线程正常退出了qDebug()<<"子线程退出了";}else if(flag==WAIT_TIMEOUT){//在设定的等待时间内,子线程没有退出,等待超时了qDebug()<<"等待超时,强制杀死线程";::TerminateThread(handle,-1);//强制杀死子线程,有风险的方式}if(handle){::CloseHandle(handle);//关闭句柄,使用计数-1,当使用计数减为0的时候系统就会回收内核对象·}handle=nullptr;Sleep(1000);
}
子线程

在main.cpp中写下面代码

DWORD (WINAPI/*调用约定*/ ThreadProc) (LPVOID/* void* */ lpThreadParameter){int n=*(int*)lpThreadParameter;while(!isTreadQuit){qDebug()<<"仆人在挣钱";Sleep(1000);}//第一种//isAlreadyQuit=true;return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

LabVIEW开发干扰对无线网络基础设施进行隐蔽影响测试

LabVIEW开发干扰对无线网络基础设施进行隐蔽影响测试 针对各种级别和类型的信息资源的DDoS攻击因其相对容易创建和应用的高效率而最为流行。同时&#xff0c;现有的机制不足以检测它们。因此&#xff0c;防范此类攻击的问题变得越来越紧迫&#xff0c;包括在实施IEEE 802.11标…

<八> objectARX开发:动态拖动Jig创建自定义实体

1、介绍 接上一篇文章,在某些情况下,CAD中的实体对象初始参数并不是固定的,我们需要通过jig动态拖动方式来绘制自定义实体,下面就用一个简单的例子来介绍一下自定义实体动态绘制。   实体形状:包括实体夹点和文字夹点拖动实现。 2、效果 3、源码 static void RYMyGrou…

命令行环境

sleep 20 延迟20秒 这个是操作系统的信号机制 ctrl z ^z可以恢复 jobs 可以查看 终端运行工作列表&#xff0c;bg可以将暂停的作业重新运行 通过kill暂停作业 通过 -KILL 之后才可以将 -HUP 作业悬挂起来 终端复路多用 会话 ^a p 上一个会话 ^ a n 下一个会话 别名 左右不能…

【C++入门到精通】C++入门 —— 多态(抽象类和虚函数的魅力)

阅读导航 前言一、多态的概念1. 概念2. 多态的特点 二、多态的定义及实现1. 多态的构成条件2. 虚函数3. 虚函数的重写⭕虚函数重写的两个例外1.协变(基类与派生类虚函数返回值类型不同)2.析构函数的重写(基类与派生类析构函数的名字不同) 4. override 和 final&#xff08;C11 …

港联证券|股票涨跌怎么看?什么股票值得投资?

股票是一种常见的理财产品&#xff0c;它可以让投资者分享企业成长带来的收益&#xff0c;但股票市场也充满变数和风险。那么股票涨跌怎么看&#xff1f;什么股票值得投资&#xff1f;港联证券也为大家准备了相关内容&#xff0c;以供参考。 股票涨跌怎么看&#xff1f; 股票涨…

教你炒股票25:每日解盘

每日解盘(2007-01-23 15:28:03 ) 本帖最后由 旁观者 于 2009-12-5 10:05 编辑缠中说禅&#xff1a;2007-01-23 15:28:03 今天的走势没什么特别的&#xff0c;就是回补缺口&#xff0c;由于2870触及&#xff0c;因此还存在继续演化成大级别中枢的情况&#xff0c;明天&#xff0…

股市连续大跌,上证指数创新低,还是安心做工业

4月25日收盘&#xff0c;市场情绪低迷&#xff0c;沪深三大指数低开低走并跌超5%&#xff0c;上证指数报跌5.13%并跌破3000点至2928点且创新低&#xff0c;深证成指跌6.08%至10379点&#xff0c;创业板指跌5.56%至2169点。今日市场各版块略显不振&#xff0c;除了春风动力带动的…

快播创始人王欣再复出,创造新式播放器,看到功能后网友们沸腾了

在互联网高速发展的时代&#xff0c;手机由按键全部换成触屏&#xff0c;各大视频软件也迅速崛起。其中就包括快播&#xff0c;可能很多00后不熟悉快播这个视频播放软件&#xff0c;在前些年&#xff0c;快播一度占据了各大视频播放软件榜首。 快播的创始人王欣因不满国企的氛围…

一款使用RxJava+Retrofit+MVP的快播App开源啦!

《快播》&#xff0c;仿网易云音乐UI&#xff0c;整体采用RxJavaRetrofitMVP的架构&#xff0c;支持在线视频播放&#xff0c;在线图片浏览等功能。 用到第三方开源库&#xff1a; ButterKnife&#xff1a;依赖注入框架glide&#xff1a;图片加载retrofit&#xff1a;网络请求…

快播将关闭QVOD服务器 宅男,你心碎了吗?

快播科技昨晚发布公告称&#xff0c;快播将关闭qvod服务器&#xff0c;停止基于快播技术的视频点播和下载&#xff0c;清理低俗内容与涉盗版内容;同时启动商业模式转型&#xff0c;转型原创内容&#xff0c;重视版权内容和微电影发展。 快播官方表示&#xff0c;“从此刻起&…

TCP 和 UDP 的区别、TCP 是如何保证可靠传输的?

先来介绍一些osi七层模型 分为应用层、表示层、会话层、运输层、网络层、链路层、物理层。 应用层(数据)&#xff1a;确定进程之间通信的性质以及满足用户需要以及提供网络和用户应用&#xff0c;为应用程序提供服务&#xff0c;DNS&#xff0c;HTTP&#xff0c;HTTPS&#xf…

快播王欣将出狱!还有机会吗?

点击上方“程序员大咖”&#xff0c;选择“置顶公众号” 关键时刻&#xff0c;第一时间送达&#xff01; 服刑两年的快播董事长王欣就快出狱了。2017 年 11 月 20 日&#xff0c;他的妻子曾发微博称&#xff1a;“感谢又一年的相伴&#xff0c;终于快要出来重振雄风了 老公等你…

快播CEO王欣出狱;1号单车宣布停运;网易考拉聚美等海淘商品涉假 丨价值早报

第【857】期早报由【周四】赞助播出 01 今日头条 知情人称快播创始人王欣已经于昨日出狱 据《创业家》昨日(2月7日)报道,从知情人士处得到消息,快播创始人王欣已于昨天出狱。 该知情人士称,王欣昨日下午刚刚出来,“刚洗完澡,理完发”。 资料显示,快播成立于2007年,巅峰…

今日头条或推“多闪”对垒微信;快播王欣马桶 MT 被封;高通拒为 iPhone 提供芯片 | 极客头条...

「CSDN 极客头条」&#xff0c;是从 CSDN 网站延伸至官方微信公众号的特别栏目&#xff0c;专注于一天业界事报道。风里雨里&#xff0c;我们将每天为朋友们&#xff0c;播报最新鲜有料的新闻资讯&#xff0c;让所有技术人&#xff0c;时刻紧跟业界潮流。 快讯速知 快播CEO王欣…

游卡桌游王锐杰:桌游网游化是必然趋势

借由2008年的一次参展赠送&#xff0c;三国杀在北上广迅速走红&#xff0c;并带领桌游之风在全国广为传播。从开始仅在淘宝店个位数的买卖量到如今1000多万套的销售&#xff0c;将其创始人黄恺拉到了福布斯“中美30位30岁以下的创业者”榜单&#xff0c;与马克扎克伯格站在一起…

计算机毕业设计springboot基于springboot的桌游信息管理系统6duwm【附源码】

本项目包含程序源码数据库LW调试部署环境&#xff0c;文末可获取一份本项目的java源码和数据库参考。 系统的选题背景和意义 选题背景&#xff1a; 随着社会的发展和人们生活水平的提高&#xff0c;桌游作为一种休闲娱乐方式越来越受到人们的喜爱。桌游不仅能够带给人们欢乐和…

桌游剧本杀行业解决方案

数据显示&#xff0c;2019年剧本杀市场规模突破100亿元&#xff0c;尽管2020年受疫情影响&#xff0c;“剧本杀”市场规模仍增长至117.4亿元&#xff0c;预计未来行业规模将持续增长&#xff0c;2022年将突破230亿元。 艾媒咨询数据显示&#xff0c;消费者年轻化趋势明显&…

【游戏】买了首款桌游!

今天我的首款桌游终于到货了&#xff0c;那个激动啊&#xff01;&#xff01;&#xff01; 刚刚把棋子的贴纸贴好&#xff0c;就冲来写了此文&#xff0c;哇哈哈哈&#xff01; 盒子正面&#xff1a; 盒子背面&#xff1a; 说明书正面&#xff1a; 说明书背面&#xff1a; 人物…

Charterstone for Mac 契约石 中文版 好玩的桌游棋盘战略游戏

契约石 Charterstone for Mac 是一款桌游改编的游戏&#xff0c;游戏完美继承了桌游的特性&#xff0c;并且玩家在家也可以体验多团体游戏的爽感&#xff0c;玩家可以在契约之地上假造一座永恒之城&#xff0c;管理工人解锁和建造新设施&#xff0c;完成一个游戏内容之后在此基…

2023 精品桌游微信小程序源码 带流量主

在开发工具测试了下&#xff0c;能搭建出来&#xff0c;功能在7/25测试时正常使用 UI非常漂亮。看着也比较舒服&#xff0c;游戏重要有 1.谁是卧底 2.真心话大冒险 2023 精品桌游微信小程序源码 带流量主2023 精品桌游微信小程序源码 带流量主2023 精品桌游微信小程序源码 带流…