协程,线程与进程
协程,线程与进程,这三个词语在开发时并不少见。它们都是多任务处理的方式,但层级和开销不同。
进程是系统资源分配的基本单位。每个进程都有着独立的地址空间和系统资源,互相之间隔离。使得通常情况下,一个进程的崩溃不会影响到其他进程。但也因此导致进程之间的通信开销较大。
线程则是进程内的执行单元。同进程下的线程共享进程资源,使得通信开销较小,但也因此需要注意资源竞争问题。
协程则与前两者不同,它是用户态的,由开发者控制并调度。切换时不涉及内核态操作,因此开销极小。适合高并发任务。
可以简单的将三者看作以下关系:
- 进程是一家公司,通常倒闭了不会影响到其他公司。但创建一家公司需要耗费相当多的资源,在系统资源较少时非常昂贵。
- 线程是公司内部的员工,共享公司资源,但需要协调会议室之类的的分配。
- 协程则是员工手上的任务与资源,一个员工它可以去使用打印机打印文件,但不会在打印机前等待,而是回去接着做其他工作,过一会过来看看打印机打印好了没。
协程,线程与进程
http://www.inksha.com/archives/xie-cheng-xian-cheng-yu-jin-cheng