什么是线程?线程和进程的区别?_进程、线程、协程三者之间的联系与区别

本文详细介绍了进程、线程和协程的概念,指出进程是资源分配的最小单位,线程是CPU调度的最小单位,而协程则是用户态的轻量级线程,具有高效性和无需锁机制的优势。通过对比,强调了协程在执行效率和资源管理上的特点,以及线程与进程之间的关系和它们在操作系统设计中的角色。
摘要由CSDN通过智能技术生成

768b32717814f9ffe39b073d1f8812e8.png

一、进程

进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己独立的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源(CPU时间片、内存等资源),进程是资源分配的最小单位。

af2339684fdbfa401e68da45e55278ac.png

二、线程

线程,有时被称为轻量级进程(Lightweight Process,LWP),是操作系统调度(CPU调度)执行的最小单位。

720cb7b40f0fb10ab0c8a6591d2d4aab.png

三、协程

协程是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。
协程在子程序内部可中断的,然后转而执行别的子程序,在适当的时候再返回来接着执行。

6fa06a05293779349127fd0fd8f975f2.png

四、进程和线程的区别与联系

并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行。

拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。

系统开销:多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。

线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。

协程和线程区别:协程避免了无意义的调度,由此可以提高性能,但也因此,程序员必须自己承担调度的责任,同时,协程也失去了标准线程使用多CPU的能力。

协程的特点在于是一个线程执行,那和多线程比,协程有何优势?

1.极高的执行效率:因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显;

2.不需要多线程的锁机制:因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。

【联系】:线程与进程的联系

1.一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程;

2.资源分配给进程,同一进程的所有线程共享该进程的所有资源;

3.处理机分给线程,即真正在处理机上运行的是线程;

4.线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。

操作系统的设计,因此可以归结为三点:

(1)以多进程形式,允许多个任务同时运行;

(2)以多线程形式,允许单个任务分成不同的部分运行;

(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。

如果你喜欢我写的技术文章以及面试总结,欢迎关注收看我的视频,并且点赞、收藏、关注我哦。

我是luke,感谢你的关注!

很多小伙伴在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,希望能够去帮助到小伙伴们,可以关注我。并且加入到我的圈子一起学习成长哦【架构师之路】点击链接申请加入圈子

架构师之路 - 知乎​www.zhihu.com
bdb5bc4fbdae6b64b74f988fa43642f5.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值