一、进程
资源分配和调度的基本单位
各个进程拥有自己的代码段。
进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。
二、线程
线程比进程轻量级,线程的切换cpu花费比进程小,线程能加大系统的并行度。
一个进程的各个线程之间是共享代码段的,各个线程都有一个程序计数器来指向下一条应该执行的指令。
线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的)。
三、协程
协程和线程一样共享堆,不共享栈,协程由程序员在协程的代码里显示调度。
每个任务不完全占据一个进程或者线程,当任务在执行过程中,需要等待IO等资源时,任务将所占据的进程或者线程释放,以便其他任务使用这个进程或者线程。各种语言对于协程支持时,多数都采用了Actor Modle来实现,每个任务就是一个Actor,Actor之间通过消息来进行交互,而不是采用共享的方式。Actor可以看做是一个轻量级的进程或者线程。
问题:协程怎么易于异步化了?还需要仔细研究下
kilim框架
协程http://www.blogjava.net/BlueDavy/archive/2010/01/28/311148.html