(深入浅出,推荐!)多线程零基础到实战系列1-----线程是什么?

欢迎交流 QQ 2431173627 微信 ccc17862701790

这是这个系列的第一篇博文
笔者将会把个人学习 使用多线程过程中的一些总结理解整理在这一个系列 
如果有差错 欢迎交流指正!
整个线程相关的知识框架 个人的整理如下(可能随着后续的学习会有扩充)

今天先讲一讲第一部分 ,线程的基本概念,也就是说 线程到底是个什么东西 目录如下

线程的引入

线程和进程的比较

线程和进程的区别

线程和进程的联系

线程的内存结构​


线程的引入

1.早期的计算机系统都只允许 一个任务独占系统资源,
 一次只能执行一个程序 由于对程序并发执行的需求 引入了多进程
2.进程的引人可以解决多任务支持的问题,但是也产生了新的问题
问题一:每个进程分别分配资源开销比较大
问题二:进程频繁切换导致额外系统开销
问题三:进程间的通信实现复杂
3.考虑现实中的场景:
一个word程序如果采用多进程 一个进程负责界面交互 
一个进程负责后台运算 会相当低效 (进程通信不好实现 进程频繁切换导致额外的系统开销)
一个同时要处理数以千记请求的网络数据库如果采用多进程
 (对每个请求都创建一个进程去响应那服务器的资源肯定很快就耗尽了,而且进程切换消耗很大)
4.由此就演化出了在一个进程的内存空间上开辟多个"小进程",
利用这些小进程来实现多个任务的方法,这些小进程就是所谓的线程
这些线程在进程的内存空间内共享很多进程的资源 所以每个线程分配资源开销不会很大
线程的规模较小 故线程的切换开销也不会很大
线程之间共享进程的一部分地址空间 故线程之间的通信也不会很麻烦
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。

线程和进程的比较

线程和进程的区别

除了上面引入部分说的三个区别  还有以下区别
1.进程是资源管理的最小单位,线程是程序执行的最小单位。

2.进程的实现只能由操作系统内核来实现,而不存在用户态实现的情况。
线程既可以通过内核来实现 也有通过用户态来实现
因为线程的管理者可以是用户也可以是操作系统本身,
线程是进程内部的东西,当然存在由进程直接管理线程的可能性。
因此线程的实现就应该分为内核态线程实现和用户态线程实现。

3.稳定性
多线程之间切换消耗资源少,但是不稳定 一个线程崩溃了会影响整个进程
多进程之间切换消耗资源多,但是稳定 一个进程崩溃不会影响其他进程

线程和进程的联系​​​​​​​

1.线程是进程里面的一个执行序列,显然一个进程可以同时拥有多个执行序列,

2.每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。

 3.同一个进程中的多个线程之间可以并发执行.一个线程可以创建和撤销另一个线程;     

4.但是线程不能够独立执行,必须依存在进程中 

5.每个进程运行时,都会创建一个主线程,也叫主控线程,通过主控线程可以继续创建其他子线程

 

线程的内存结构

 

线程间共享的资源:
在内核区:文件描述符表,每种信号的处理方式,当前工作目录
在用户区:堆区,数据区( bss段,Data段Test 段) 
线程间独占的资源:

用户区:
1.线程ID 
每个线程都有自己的线程ID,这个ID在本进程中是唯一的。进程用此来标识线程。

2.寄存器组的值 
由于线程间是并发运行的,
每个线程有自己不同的运行线索,
当从一个线 程切换到另一个线程上时,
必须将原有的线程的寄存器集合的状态保存,以便将来该线程在被重新切换到时能得以恢复。

3.错误返回码 
由于同一个进程中有很多个线程在同时运行,
可能某个线程进行系统调用后设置了errno值,而在该 线程还没有处理这个错误,
另外一个线程就在此时被调度器投入运行,这样错误值就有可能被修改。
所以,不同的线程应该拥有自己的错误返回码变量。

4.线程的信号屏蔽码 
由于每个线程所感兴趣的信号不同,
所以线程的信号屏蔽码应该由线程自己管理。
但所有的线程都 共享同样的信号处理器。

5.线程的优先级 
由于线程需要像进程那样能够被调度,
那么就必须要有可供调度使用的参数,
这个参数就是线程的优先级。

内核区:
6.线程的栈 
一个栈中只有最下方的帧可被读写,
相应的,也只有该帧对应的那个函数被激活,处于工作状态 
为了实现多线程,则必须绕开栈的限制 为此,在创建一个新的线程时,
 要为这个线程建 个新的栈,每个栈对应一个线程 
当某个栈执行到全部弹出时,对应线程完成任务, 
结束 所以,多线程的进程在内存中有多个栈,
多个栈之间以指定的域隔开,以备栈的增长
 每个线程可调用自己栈 下方的帧中的参数和变量
发布了61 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/vjhghjghj/article/details/100516218