以食堂买饭的过程类比并发模型

1. 多进程:

食堂有n个窗口,每个窗口相当于一个进程(只有一个厨师,只能为一个同学做饭),要开一个窗口开销比较大。每个窗口一次为1个同学做饭,后面的同学只能等当前同学饭好了才能买饭。

2. 多线程:

食堂的每个窗口(进程)可以有多个厨师(多个线程),一个窗口可以为多个同学同时做饭,当没有闲着的厨师的时候,该窗口就不能再接待更多的同学了(线程达到上限),并且,买饭的同学必须在窗口前等待(阻塞),此时该窗口也停止接受新的订单。

3. 协程:

食堂的每个窗口有一个厨师和一个接待员(单个线程),每来一个同学,就接一个订单,然后给同学发一个号码牌,让同学去干别的事情,不用等着,然后接待员继续接单,厨师去做饭,等饭好了,接单员就喊相应号码的同学:同学你的饭好了!然后那个同学就能吃上饭了。其他同学则继续干其他事情,接单员处于一个永真循环中一直接单,厨师也一直做饭,从而实现了并发。并且这种并发没有切换的开销。

Comments

2015-06-16

⬆︎TOP