线程与协同程序的主要区别在于,一个具有多线程的程序可以同时运行几个线程,而协同程序却需要彼此协作地运行。就是说,一个具有多个协同程序的程序在任何时刻只能运行一个协同程序,并且正在运行的协同程序只会在其显示地挂起时,它的执行才会暂停。
线程和协程的异同
协程(Coroutine)类似于线程(Thread)的地方是:每个协程都有有自己的堆栈,自己的局部变量。
线程和协程的主要区别在于:
线程可以并发运行,线程之间是不能共写全局变量(写冲突)。
协程不能并发运行,协程之间可以共享全局变量(不会存在写冲突)。
线程和协程的异同
coroutine创建的所谓的“线程”都不是真正的操作系统的线程,实际上是通过保存stack状态来模拟的。
由于是假的线程,所以切换线程的开销极小,同时创建线程也是轻量级的。