现在的位置: 首页 > 综合 > 正文

同步与异步通信编程

2013年02月04日 ⁄ 综合 ⁄ 共 875字 ⁄ 字号 评论关闭

      编写异步的通信程序,就是说你首先打开发送机制并发送4000个字节的信息,但是主线程并不循环或者阻塞在那里等着发送完成,而是线程继续执行去干别的事情。等操作系统发送完成这4000个信息,它会回调你的处理方法,你就可以在这个回调方法中继续发送下一个4000个字节的信息,然后就结束了(不需要循环或者阻塞)。等操作系统又发送完,又会回调你的处理程序,你又可以继续发送下一块数据.....直到你发送完最后一块数据,操作系统回调你的程序的时候,你不再发送数据了,可以直接关闭发送机制。

       类似这类过程叫做异步地进行通讯编程。跟操作系统底层是不是异步通讯没有关系。通讯程序异步编程是最为简洁和和高效地并行化编程的机制,至于通讯的各个层(例如7层模型的底下基层)如何实现,无关。

       多数时候我们说编写通讯程序的方式的时候,异步通讯都是指异步地编写通讯程序,我们写的程序只是作为一个方法片段参与操作系统的通讯程序的并行调度之中,是指从应用层的角度的并行化,而并不是玩底层的通讯概念。

       实际上简单的说,所谓异步,就是指请求方或发起方发出一个通信请求,这时请求方不会等待对方的回复,继续后面的工作。请求的结果由对方在完成了相应的操作后,通过一个回调(callback)的机制,回调请求方的一个方法,以便通知请求方它的请求已经得到了回复。当然回调的方法是请求方在一开始发出请求的时候就已经告诉对方了。
      相对同步,情况正好相反,请求方发出通信请求后,会一直等待对方的回复,在收到回复前,不会做任何事情,直到超时或收到回复为止。
---------------------------------------------------------------

1. 异步通信就是把信件丢进邮筒里面就可以了,之后你该干什么的就干什么去。然后若干天后,会有邮差主动把回信送上门,告诉你,回信到了。
同步这是你把信丢进邮筒里面之后,啥也做不了,只能够盯着那个邮筒,直到回信从里面吐出来(hehe,现实中不可能是这样的,类比啦)

2. 跟通信是两码事。

抱歉!评论已关闭.