码迷,mamicode.com
首页 > 其他好文 > 详细

同步、异步、阻塞、非阻塞的概念理解

时间:2016-05-21 15:56:09      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

 

网络通信中的同步和异步机制描述通信模式。同步机制,是指发送方发送请求后,需要等待接收到接收方发回的响应之后,才开始发送下一个请求;异步机制,正好相反,是指发送方在发送一个请求之后,不等待接收方响应这个请求就继续发送写一个请求。所有来自发送方的请求将形成一个队列,接收方处理完请求之后通知发送方。

而阻塞和非阻塞是用来描述进程的处理调用的方式,实际上也就是网络套接字Socket的阻塞和非阻塞方式,而Socket的实质也就是IO操作。Socket的阻塞调用方式为,在调用IO结果返回之前,当前线程从运行状态被挂起,一直等待到调用结果返回之后才被唤醒,进去就绪状态,获得CPU后继续执行;非阻塞调用方式正好相反,在非阻塞调用方式中,如果调用结果不能立刻返回,当前线程不会被挂起,而是立即返回执行下一个调用。

 

这四个概念两两组合就可以产生四中不同的处理方式:

 

同步阻塞方式 :                                                                                                   

发送方向接收方发送请求后,一直等待响应;接收方在处理请求时候如果IO操作不能马上得到结果,就会一直等待到返回结果后在响应发送方,期间不能进行其他工作。

例如:在超市排队付账的时候,客户(发送方)向营业员(接收方)付款(发送请求)之后需要等待收款员找零,期间不能做其他事情;而收款员要等待收款机返回结果

(IO操作)之后才能把零钱取出来交给客户(响应请求),期间也只能等待,不能做其他事情。这种方式实现简单,但是效率很低。

 

同步非阻塞方式 :                                                                                                

发送方向接收方发送请求后,一直等待响应;接收方出请求时进行的IO操作如果不能马上得到结果,就立即返回,去做其他事情,但由于得到请求的处理结果,不响应

发送方,发送方一直等待。一直到IO操作完成,接收方得到请求结果响应发送方的请求时,发送方才进行下一次请求过程。实际不使用这种方式。

 

异步非阻塞方式 :                                                                                                

发送方向接收方发送一个请求之后,不用等待响应,可以继续其他工作;接收方处理请求时进行的IO操作如果不能马上得到结果,就一直等待返回结果后,在响应发送方,

期间不能做其他事情。这种方式在实际中也不使用。

 

异步非阻塞方式 :                                                                                                

发送方向接收方发出请求后,不用等待响应,可以直接进行下一次请求或者其他工作,接收方处理请求时进行IO操作如果不能立刻得到结果,也不用等待,而是返回去做其

他事情。当IO操作完成之后,将完成的状态和结果通知接收方,接收方再响应发送方。继续之前超市付款的例子:客户(发送方)向营业员(接收方)付款(发送请求)后

在等待收款找零的时候,还可以做其他事情,比如打电话、聊天;而收款员在等待收款机处理交易(IO请求)的过程中也可以帮助客户将商品打包,当收款机返回结果后收

款员给客户结账(响应请求)。在四种方式中,这种方式是发送方和接收方通信效率最高的一种。

同步、异步、阻塞、非阻塞的概念理解

标签:

原文地址:http://www.cnblogs.com/diligent-bird/p/5514833.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!