线程和进程的关系

本文探讨了线程与进程的关系,包括它们的包含关系、用处、区别,以及各自的优缺点。强调了线程在并发编程中的效率优势,但过多可能导致资源竞争和性能下降,而进程提供了更好的隔离性,但资源消耗更多。
摘要由CSDN通过智能技术生成

目录

1.线程与进程的包含关系

2.线程与进程的用处

3.线程与进程的区别

4.线程的优缺点

5.进程的优缺点

6.总结

1.线程与进程的包含关系

线程是包含于进程的。进程是由一个或者多个PCB(process control block (进程控制块))组成的。一个进程至少包含一个线程,当然一个进程也可以包含多个线程。一个PCB用来表示一个线程。

2.线程与进程的用处

它们俩都用于实现并发编程。

3.线程与进程的区别

进程是大重量的,效率也低,每次建立进程,删除进程,调度进程都需要耗费很多的时间资源,而线程是轻量的,它在建立删除时不需要像进程一样重新建立内存指针,pid,文件描述符表等,因为这些数据在同一个进程中的线程是共享的,它只需要创建自己的PCB,如状态,优先级,上下文和记账信息。所以线程在创建销毁调度上效率是高很多的。

4.线程的优缺点

增加线程数可以使得任务效率变高,就比方是我们吃一桌饭,吃的人增多,那么我们把这桌饭吃完的速度就变快了,就不用重新开个房准备桌子椅子了,也就是增加线程是不需要重新再准备一份资源的(内存+硬盘),如图(图片的左上角是在同一个进程中,打错了,请读者注意,抱歉):

一个人吃的很慢,假设1min吃1kg,那就要吃100min

而我8个人吃就只用吃12.5min

这样就加快了效率,但是呢,线程一直变多效率也不会一直变快,到达一定数量时就不会使效率提高,还会使调度增大负担降低效率,并且可能出现线程不安全问题和线程异常问题。继续按照我们上述的例子,如图:

假设我们一桌就只能坐8个人,但是我们有15个人,这时候一号滑稽脸想吃,那么2号说“我给你让位置”,那么2号就吃不了了,1号上去吃,这时效率不仅没有提高,并且他俩换位置还消耗了时间,降低了效率。

在人数变多时这些滑稽脸不一定这么谦让,可能会出现抢食物的问题,这就是线程不安全问题。

那说不定有些滑稽脸更可怜,就一直吃不到,他就想着我吃不到那大家都别吃了。他就想掀桌了(抛出异常),如果有合理的方法劝住他(catch)合理解决,那还好,如果没劝住,那大家都吃不了,就相当于是整个进程都崩溃了,其他线程也没得工作了。

所以线程会影响到同一个进程中的其他线程。

线程之间因为是共用同一块内存和硬盘资源,所以不需要进行通讯,直接从资源中获取就好了。

5.进程的优缺点

进程和进程之间是互不影响的,它是有隔离性的,所以和上述讲的线程不一样,进程有一个崩溃了另一个进程还能继续运行。但是为了处理这100kg的饭菜,我多开了一间房间,我还要多给出一张桌子,照样还是要给出一个人,那么我的用的资源就多了,效率也会变低。

如果要进行进程之间的通讯,我们一般就要重新准备一块空间,然后把进程的信息发到这块空间上进行交互,我们一般使用“文件”或是“网络”进行通讯。

6.总结

综上所述,我们可以知道,进程是资源分配的基本单位,而线程是调度执行的基本单位。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值