socket 阻塞与非阻塞 同步与异步
2008-06-23 23:17
225 查看
阻塞与非阻塞。所谓阻塞方式的意思是指, 当试图对该文件描述符进行读写时, 如果当时没有东西可读,或者暂时不可写, 程序就进入等待状态, 直到有东西可读或者可写为止。而对于非阻塞状态, 如果没有东西可读, 或者不可写, 读写函数马上返回, 而不会等待。缺省情况下, 三述符处于阻塞状态。
同步异步与阻塞和非阻塞是两种不同的概念来着
同步异步指的是通信模式,而阻塞和非阻塞指的是在接收和发送时是否等待动作完成才返回
所以不能混淆这四个磁。
以下是我的一些理解,请大家多指教
首先是通信的同步,主要是指客户端在发送请求后,必须得在服务端有回应后才发送下一个请求。所以这个时候的所有请求将会在服务端得到同步
其次是通信的异步,指客户端在发送请求后,不必等待服务端的回应就可以发送下一个请求,这样对于所有的请求动作来说将会在服务端得到异步,这条请求的链路就象是一个请求队列,所有的动作在这里不会得到同步的。
阻塞和非阻塞只是应用在请求的读取和发送。
在实现过程中,如果服务端是异步的话,客户端也是异步的话,通信效率会很高,但如果服务端在请求的返回时也是返回给请求的链路时,客户端是可以同步的,这种情况下,服务端是兼容同步和异步的。相反,如果客户端是异步而服务端是同步的也不会有问题,只是处理效率低了些。
同步=阻塞式,异步=非阻塞式
同步和异步都只针对于本机SOCKET而言的
同步模式下,比如RECIEV和SEND,都要确保收到或发送完才返回,继续执行下面的代码
不然就阻塞在哪里,所以,同步模式下,一般要用到线程来处理。
异步模式就不同了,不管有没有收到或发送出去,他都马上返回,继续执行下面的代码,结果又消息通知。
同步异步与阻塞和非阻塞是两种不同的概念来着
同步异步指的是通信模式,而阻塞和非阻塞指的是在接收和发送时是否等待动作完成才返回
所以不能混淆这四个磁。
以下是我的一些理解,请大家多指教
首先是通信的同步,主要是指客户端在发送请求后,必须得在服务端有回应后才发送下一个请求。所以这个时候的所有请求将会在服务端得到同步
其次是通信的异步,指客户端在发送请求后,不必等待服务端的回应就可以发送下一个请求,这样对于所有的请求动作来说将会在服务端得到异步,这条请求的链路就象是一个请求队列,所有的动作在这里不会得到同步的。
阻塞和非阻塞只是应用在请求的读取和发送。
在实现过程中,如果服务端是异步的话,客户端也是异步的话,通信效率会很高,但如果服务端在请求的返回时也是返回给请求的链路时,客户端是可以同步的,这种情况下,服务端是兼容同步和异步的。相反,如果客户端是异步而服务端是同步的也不会有问题,只是处理效率低了些。
同步=阻塞式,异步=非阻塞式
同步和异步都只针对于本机SOCKET而言的
同步模式下,比如RECIEV和SEND,都要确保收到或发送完才返回,继续执行下面的代码
不然就阻塞在哪里,所以,同步模式下,一般要用到线程来处理。
异步模式就不同了,不管有没有收到或发送出去,他都马上返回,继续执行下面的代码,结果又消息通知。
相关文章推荐
- (转)socket阻塞与非阻塞,同步与异步、I/O模型
- 浅谈socket同步和异步、阻塞和非阻塞、I/O模型
- Socket:同步异步 和 阻塞非阻塞的区别
- socket阻塞与非阻塞,同步与异步、I/O模型
- socket阻塞与非阻塞,同步与异步
- socket阻塞与非阻塞,同步与异步、I/O模型
- socket中阻塞与非阻塞,同步与异步
- Socket中阻塞与非阻塞,同步与异步
- socket阻塞与非阻塞,同步与异步、I/O模型
- socket阻塞与非阻塞,同步与异步、I/O模型
- socket阻塞与非阻塞,同步与异步、I/O模型
- socket阻塞与非阻塞,同步与异步、I/O模型
- socket中阻塞与非阻塞,同步与异步
- socket阻塞与非阻塞,同步与异步、I/O模型
- socket阻塞与非阻塞,同步与异步、I/O模型
- socket阻塞与非阻塞,同步与异步、I/O模型
- socket编程的同步、异步与阻塞、非阻塞示例详解之二
- socket 阻塞与非阻塞 同步与异步(转帖)
- socket阻塞与非阻塞,同步与异步、I/O模型
- socket阻塞与非阻塞,同步与异步