多线程概念

多线程概念

1.线程是一个执行分支,执行粒度比进程更细,调度成本更低
2.线程是进程内部的一个执行流
3.线程是CPU调度的基本单位,进程是承担分配系统资源的基本实体

什么是多线程

创建子进程时,只创建PCB,创建出来的PCB继续指向父进程的地址空间
代码区假设有很多函数存在,让不同的PCB执行不同的函数
相当于在一个进程内部包含多个执行流,指向同一个进程内的不同代码区域
每个PCB都是单独的线程
线程在地址空间内运行,所以该线程属于进程

调度成本低

多个线程之间使用的是同一个地址空间和页表
若为新的进程,则还需再次找到新的地址空间和页表并进行切换

局部性原理

CPU内部存在一个硬件cache

把一部分数据预先加载到缓冲区里,提高整机的效率
如CPU正在访问第100行代码,未来有很大概率访问101行,
所以一旦访问到第100行就把100行附近的数据全部load到内存中或者CPU的cache中

若进行线程切换,因为都属于同一个进程,cache中缓存的数据是不变的
若进行进程切换,把当前缓存的数据设为失效,cache要重新加载当前的代码和数据

调度成本更低,体现在不用对cache进行切换

线程缺点

1. 性能损失

创建过多的线程,只有少数在运行,大多数的线程来回被调度 造成性能损失 即多线程创建不合理

2.健壮性降低

如果一个线程出现问题,可能会对整个进程造成影响

3.缺乏访问控制

每个执行流通过同一个地址空间看到的资源是相同的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值