分类: LINUX
2011-12-31 19:24:31
同步和异步:与消息的通知机制有关。
|
本质区别 |
现实例子 |
同步模式 |
由处理消息者自己去等待消息是否被触发 |
我去银行办理业务,选择排队等,排到头了就办理。 |
异步模式 |
由触发机制来通知处理消息者 |
我去银行办理业务,取一个小纸条上面有我的号码,等到排到我这一号时由柜台的人通知我轮到我去办理业务。 |
阻塞与非阻塞:与线程等待消息(无所谓同步或者异步)时的状态有关。
|
本质区别 |
现实例子 |
阻塞调用 |
线程挂起,不能做其他事。 |
上面的那个例子,不论是排队还是使用号码等待通知,如果在这个等待的过程中,等待者除了等待消息之外不能做其它的事情,那么该机制就是阻塞的。 |
非阻塞调用 |
线程活跃,能处理其他事。 |
在银行办理这些业务的时候一边打打电话发发短信一边等待,这样的状态就是非阻塞的。 |
它们之间的组合应用举例:
|
阻塞调用 |
非阻塞调用 |
同步模式 |
read/write |
read/write O_NONBLOCK |
异步模式 |
IO复用:select/poll,epoll(LT模式) |
AIO系列:aio_read,aio_write等;epoll(ET模式) |