进程,线程,协程的区别和联系

进程,线程,协程的区别和联系

进程

是并发执行的程序在执行过程中分配和管理资源的基本单位,每一个进程都有自己的地址空间,即进程空间或(虚空间)

进程空间的大小只与处理机的位数有关,一个16位处理机的进程空间大小为216,而32位处理机的进程空间处理机大小为232。

进程至少有5种基本状态:初始态、执行态、等待状态、就绪状态、终止状态。

线程

线程是进程的一部分,一个没有线程的进程可以被看做是单线程。线程有时又被看做轻权进程或者轻量级进程,也是CPU调度的一个基本单位。

共享进程的地址空间,全局变量(数据和堆)。在一个进程中,各个线程共享堆区,而进程中的线程各自维持自己的栈。

线程是指一个进程内的执行单元,也是进程内的可调度实体。

与进程的区别:

  1. 地址空间:进程内的一个执行单位;进程至少有一个线程;它们共享进程的地址空间;而进程有独立的地址空间。
  2. 资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源。
  3. 线程是处理器调度的基本单位,但线程不是。

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

协程

协程,是一种比线程更加轻量级的存在,协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行)。这样带来的好处就是性能得到了很大的提升,不会像线程切换那样消耗资源。

子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕。所以子程序调用是通过栈实现的,一个线程就是执行一个子程序。子程序调用总是一个入口,一次返回,调用顺序是明确的。而协程的调用和子程序不同。

注意:协程在子程序内部是可中断的,然后转而执行别的子程序,在适当的时候再返回来接着执行。

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

  1. 极高的执行效率:因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显;
  2. 不需要多线程的锁机制:因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值