网络编程中的阻塞与非阻塞,同步与异步概念的理解
来源:互联网 发布:郭达 刁光斗 知乎 编辑:程序博客网 时间:2024/06/05 18:38
最近两天闲着没事,就研究了一下socket编程,在网上看别人的domo看了好久,发现被socket通信中的阻塞、非阻塞、同步、异步等概念给绕晕了,虽说这些东西以前都是学过的,但是还是决定重新研究一番。
- 同步:
所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。就是没有结果就死等!
例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
- 异步:
异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。就是你先干着,干好了再告诉我,我忙我的去。
例如 ajax请求(异步): 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕
- 阻塞:
阻塞调用是指调用结果返回之前,当前线程会被挂起,CPU暂停对其分配时间片,函数只有在得到结果之后才会返回。
有人也许会把阻塞调用和同步调用等同起来,实际上他是不同的。对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。就是调用我(函数),我(函数)没有接收完数据或者没有得到结果之前,我不会返回。
例如,我们在socket中调用recv函数,如果缓冲区中没有数据,这个函数就会一直等待,直到有数据才返回。而此时,当前线程还会继续处理各种各样的消息。
- 非阻塞:
非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
对象的阻塞模式和阻塞函数调用
对象是否处于阻塞模式和函数是不是阻塞调用有很强的相关性,但是并不是一一对应的。阻塞对象上可以有非阻塞的调用方式,我们可以通过一定的API去轮询状 态,在适当的时候调用阻塞函数,就可以避免阻塞。而对于非阻塞对象,调用特殊的函数也可以进入阻塞调用。函数select就是这样的一个例子。
阅读全文
0 0
- 网络编程中的阻塞与非阻塞,同步与异步概念的理解
- 网络编程中的同步与异步,阻塞与非阻塞
- 网络编程中的异步、同步、阻塞、非阻塞的理解
- 网络编程中阻塞与非阻塞,同步与异步、I/O模型的理解
- 网络编程中阻塞与非阻塞、同步与异步、I/O模型的理解
- 网络编程中阻塞与非阻塞,同步与异步、I/O模型的理解
- 网络编程中阻塞与非阻塞,同步与异步、I/O模型的理解
- 同步与异步、阻塞与非阻塞概念理解
- 网络编程中的阻塞,非阻塞、同步,异步概念
- 阻塞非阻塞、同步与异步,概念理解
- 理解同步异步与阻塞非阻塞
- 理解同步异步与阻塞非阻塞
- 理解阻塞非阻塞与同步异步
- 阻塞与非阻塞,同步与异步的理解
- 阻塞与非阻塞、同步与异步的理解
- PHP-Socket-阻塞与非阻塞,同步与异步概念的理解
- PHP-Socket阻塞与非阻塞,同步与异步概念的理解
- PHP-Socket-阻塞与非阻塞,同步与异步概念的理解
- Ajax+SpringMVC+Spring+Mybatis+MySql+js用户注册实例
- FTPrep, 33 Search in Rotated Sorted Array
- SpringBoot获取properties配置
- 杭电ACM基础编程知识点(2)
- 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第三部分
- 网络编程中的阻塞与非阻塞,同步与异步概念的理解
- 创建js对象的几种方式
- 处理异常
- (ubuntu系列)一些必备好玩的东西
- js通过字节长度截取中英文混合字符串
- 引用iview ui 时报错,很有可能是你写的不对!!!
- 给一个fragment的listview刷新数据,adapter报空
- String 占位符
- 自组织神经网络SOM原理——结合例子MATLAB实现