同步、异步、阻塞、非阻塞的理解
来源:互联网 发布:杭州趣得网络 编辑:程序博客网 时间:2024/05/16 06:20
同步/异步主要针对C端:
同步:
所谓同步,就是在c端发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。
例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
异步:
异步的概念和同步相对。当c端一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。
例如 ajax请求(异步): 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕
阻塞/非阻塞主要针对S端:
阻塞
阻塞调用是指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行)。函数只有在得到结果之后才会返回。
非阻塞
非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
程序上的理解:
同步和异步的概念描述的是用户线程与内核的交互方式:同步是指用户线程发起IO请求后需要等待或者轮询内核IO操作完成后才能继续执行;而异步是指用户线程发起IO请求后仍继续执行,当内核IO操作完成后会通知用户线程,或者调用用户线程注册的回调函数。
阻塞和非阻塞的概念描述的是用户线程调用内核IO操作的方式:阻塞是指IO操作需要彻底完成后才返回到用户空间;而非阻塞是指IO操作被调用后立即返回给用户一个状态值,无需等到IO操作彻底完成。
下面是知乎的例子:
出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。
- 老张把水壶放到火上,立等水开。(同步阻塞)
老张觉得自己有点傻 - 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)
老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。 - 老张把响水壶放到火上,立等水开。(异步阻塞)
老张觉得这样傻等意义不大 - 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)
老张觉得自己聪明了。
0 0
- 同步/异步、阻塞/非阻塞的理解
- 异步/同步、阻塞/非阻塞的理解
- 同步/异步、阻塞/非阻塞的理解
- 同步,异步,阻塞,非阻塞的理解
- 同步、异步、阻塞、非阻塞的理解
- 同步、异步,阻塞、非阻塞的理解
- 同步、异步、阻塞、非阻塞的理解
- 阻塞、非阻塞、同步、异步的理解
- 异步,同步,阻塞,非阻塞个人理解
- 理解同步异步与阻塞非阻塞
- 理解:同步异步、阻塞非阻塞
- IO阻塞、非阻塞、同步、异步理解
- 同步、异步、阻塞、非阻塞理解
- 理解同步异步与阻塞非阻塞
- 理解阻塞非阻塞与同步异步
- 同步,异步,阻塞,非阻塞概念理解
- 关于同步,异步,阻塞,非阻塞的理解
- 网络编程中的异步、同步、阻塞、非阻塞的理解
- 第14周Oj-2
- hive-随机取样
- C程序设计 例题 二元一次方程组(包括判断)
- js日期计算
- ES6学习—Generator函数
- 同步、异步、阻塞、非阻塞的理解
- 林达华推荐的几本数学书
- SQL相关工具 集
- docker容器 安装vim 安装nginx docker E: Unable to locate package nginx
- 设备周期复位定位总结
- GreenDao3.0简单使用
- nyoj58_最少步数
- 打印菱形星号
- 有序链表转二叉平衡搜索树(BST)