进程
进程地址空间是独立的,有独立的栈和堆,不共享栈和堆,它由OS调度。
线程
线程有自己独立的栈和共享的堆,标准线程它由OS调度。它是CPU最小的调度单位。
协程
协程是用户态的轻量级的线程,由有自己独立的栈和共享的堆,它由程序员调度。只有少数语言(比如:GO,python)支持协程编程。协程它避免了无意义的调度。
一段协程代码:
#!/usr/bin/python # python gr.py import greenlet def run(name, nextGreenlets): for i in xrange(10): print name if nextGreenlets: nextGreenlets.pop(0).switch(chr(ord(name) + 1), nextGreenlets) greenletA = greenlet.greenlet(run) greenletB = greenlet.greenlet(run) greenletA.switch('A', [greenletB])