如果你想了解同步异步、阻塞非阻塞的基本概念,可以看下面,欲了解具体实现,请自行google^^,若有错误,请指出。
来看生活中的例子:
比如你在天猫超市买了东西,短信通知说快递很快到了,这时候你有两个选择:
1)下楼等着快递员(同步)
2)在家等着快递员送货上门(异步)
如果你下楼等着,然并卵,这时快递员并没有到,这时候,你又有两个选择:
1)深情地望着路口,等着快递员的出现(同步阻塞)
2)先干干别的,刷刷微博,知乎啥的,时不时抬头看看快递员来没(同步非阻塞)
当然,如果你在家里,也有两种选择:
1)就等着快递员把你的好吃的送来,其他啥也不想干(异步阻塞,典型吃货,实际很少用)
2)先干点别的,看看书,写写博客,等着快递员送货上门(异步非阻塞)
非阻塞应用的很多,比如nginx 这样的处理高并发网络事务的应用。
如果所有事件有严格的顺序依赖性,就必须采取阻塞方式,另外比如在一些处理时间短,需要快速响应的场合,为避免切换,提高响应速度,阻塞也是不错的选择。
总结起来说:
同步异步是一种消息机制,同步的情况下,是由处理消息者自己去等待消息是否被触发,而异步的情况下是由触发机制来通知处理消息者。
阻塞非阻塞是调用者的等待时的处理方式。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/kzq_qmi/article/details/47003519