进程、线程,协程对比

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Kwoky/article/details/88171534

进程、线程,协程对比

定义的不同

进程是系统进行资源分配和调度的个独立单位. 一个程序在一个数据集中的一次动态执行过程,可以简单理解为“正在执行的程序”。

进程一般由程序、数据集、进程控制块三部分组成。

程序用来描述进程要完成哪些功能以及如何完成;数据集则是程序在执行过程中所需要使用的资源;进程控制块用来记录进程的外部特征,描述进程的执行变化过程,系统可以利用它来控制和管理进程,它是系统感知进程存在的唯一标志。

进程的局限是创建、撤销和切换的开销比较大。

 

线程是进程的⼀个实体, 也叫轻量级进程,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有⼀点在运行中必不可少的资源(如程序计数器,⼀组寄存器和栈),但是它可与同属个进程的其他的线程共享进程所拥有的全部资源.

 

协程,又称微线程,纤程。英文名Coroutine。

协程执行过程中,在协程内部可中断,然后转而执行别的协程,在适当的时候再返回来接着执行。协程之间不是调用者与被调用者的关系,而是彼此对称、平等的,通过相互协作共同完成任务。

 

协程是一个线程执行,但执行有点像多线程

优势:

协程的执行效率极高。

因为协程切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。

不需要多线程的锁机制

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

Python对用在generator中的yield可以一定程度上实现协程。通过yield方式转移执行权。

功能

进程, 能够完成多任务, 比如 在⼀台电脑上能够同时运行多个QQ

线程, 能够完成多任务, 比如 ⼀个QQ中的多个聊天窗口

 

区别

一个程序至少有一个进程,一个进程至少有一个线程.

线程的划分尺度小于进程(资源比进程少), 使得多线程程序的并发性高。

进程在执行过程中拥有独立的内存单元, 而多个线程共享内存, 从而极大地提高了程序的运行效率

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

优缺点

线程和进程在使用上各有优缺点: 线程执行开销小, 但不利于资源的管理和保护; 而进程正相反。

猜你喜欢

转载自blog.csdn.net/Kwoky/article/details/88171534
今日推荐