不共享任何状态异步
调度由操做系统完成操作系统
有独立的内存空间(上下文切换的时候须要保存栈、cpu寄存器、虚拟内存、以及打开的相关句柄等信息,开销大)线程
通信主要经过信号传递的方式来实现(实现方式有多种,信号量、管道、事件等,通信都须要过内核,效率低)协程
共享变量(解决了通信麻烦的问题,可是对于变量的访问须要加锁)进程
调度由操做系统完成事件
一个进程能够有多个线程,每一个线程会共享父进程的资源(建立线程开销占用比进程小不少,可建立的数量也会不少)内存
通信除了可以使用进程间通信的方式,还能够经过共享内存的方式进行通讯(经过共享内存通讯比经过内核要快不少)资源
线程的使用会给系统带来上下文切换的额外负担。同步
调度彻底由用户控制class
一个线程(进程)能够有多个协程
每一个线程(进程)循环按照指定的任务清单顺序完成不一样的任务(当任务被堵塞时,执行下一个任务;当恢复时,再回来执行这个任务;任务间切换只须要保存任务的上下文,没有内核的开销,能够不加锁的访问全局变量)
协程须要保证是非堵塞的且没有相互依赖
协程基本上不能同步通信,多采用异步的消息通信,效率比较高
做者:倚天杖连接:https://www.imooc.com/article/40799来源:慕课网