多线程的初步了解---进程与线程

在我们日常使用的计算机中,我们在任务管理器界面会看到进程这个在菜单栏的字眼,在绝大多数情况下,关闭进程就是关闭程序这个我相信大家对此都已经有所了解,那么这个进程究竟是什么以及它和线程之间有什么关系,让我们来对此进行探讨

1.什么是进程

其实听名字也能够顾名思义,进程就是一个程序正在执行的过程,相当于是一个程序运行的容器,程序运行所需要的文件都在进程中,进程是系统分配资源的最小单位, 相当操作系统分配了一块地给这个程序,告诉他你就在这块地上整理好你的东西干你的事情,进程在开启之前需要向系统索要资源的,这样才能开启一个进程,进程之间是可以有父类关系的,一个进程可以是父进程也可以是子进程

2.什么事线程

线程听起来好像和进程差不多,难道是一个意思吗?很明显答案是不是,那线程到底是什么呢?其实线程和进程之间是包含与被包含的关系,在一个进程中可以有多个线程,线程是系统调度的最小单位, 线程才是真正干活的人,线程是一个执行者,会执行自己的那份代码,在我们平时写的代码中,一个main就是一个线程,也是主线程,在一个进程中可以有多个线程,但也会有一个主线程,但这个并不是进程之间的那种父子关系,,线程中没有子线程和父线程的这种说法

3.进程与线程之间的区别和联系

在上面我提到过这两是包含我与被包含的关系,一个进程中正常会有多个线程,如果只有一个线程的话,那么这个线程也就是进程是否结束的唯一变量了,为了我们更好理解线程与进程之间到底是什么关系以及他们到底在干什么样的活,我给大家举一个通俗易懂的例子,**我们可以把操作系统当成一个工厂的大老板,然后把车间当做成一个进程,这个车间就是进程向操作系统也就是老板要来的一块空间,假设这个车间只有一个工人,这就是单线程,这个工人下班了,那么这个车间就关闭,但是如果工作量变多,一个工人干不过来怎么办?这时候我们就可以多找几个工人来一起干活,这样不就可以提高效率了吗?那么这就是所谓的多线程,当一个工人下班而还有工人没下班的话这个车间可以关闭吗?那很显然不可以,**这就是进程与线程之间的关系,这两的核心关系:进程负责申请资源,线程负责在申请来的资源中执行

补充

我在这里呢还想喝大家分享一下进程到底申请了什么资源以及操作系统到底扮演了什么角色,我说完或许大家对进程与线程的了解会更加深刻,在上面的比喻中我把操作系统比作是大老板,我为什么会这样比喻呢?因为进程申请的资源都是向操作系统申请的,操作系统会分配资源给他,操作系统给了程序运行的环境,然后操作系就分配CPU算力,内存和硬盘等等,你只需要告诉操作系统你需要什么就会给分配好,然后给进程之后,线程开始干活,对于进程索要的资源中当然还有很多比如GPU(显卡),这个和我上面说的三个还不太一样,有兴趣的话大家自行了解,我就不过多赘述了

结语

对于进程和多线程的概念以及二者的关系还是比较重要的,在面试中被问到对频率也是比较高的,希望大家可以多了解以及能够记忆,这个多后续学习多线程也会有帮助

相关推荐
许彰午2 小时前
状态模式实战——Row对象的状态机
java·ui·状态模式
秋田君2 小时前
Qt 5.12.8 下载与安装教程(附网盘资源)
开发语言·qt
故事和你912 小时前
洛谷-【动态规划2】线性状态动态规划4
开发语言·数据结构·c++·算法·动态规划·图论
不吃土豆的马铃薯2 小时前
Socket 网络编程实战教程
linux·服务器·开发语言·网络·c++·算法
搬石头的马农2 小时前
Claude Code SpringBoot开发:从0到1搭建企业级项目的6个核心Skill
java·人工智能·spring boot·后端·ai编程
西安邮电大学2 小时前
Redis为什么快?
java·redis·后端·其他·面试
小成202303202652 小时前
从C到C++
开发语言·c++
折哥的程序人生 · 物流技术专研2 小时前
《Java 100 天进阶之路》第39篇:Java泛型方法的定义和使用
java·开发语言·后端·面试·求职招聘
天天进步20152 小时前
Tunnelto 源码解析 #1:从 tunnelto --port 8000 看内网穿透的完整链路
开发语言