浅谈阻塞/非阻塞、同步/异步——从linux read()系统调用出发

浅谈阻塞/非阻塞、同步/异步

–从linux IO系统调用出发

阻塞与非阻塞主要从进程/线程的角度出发:

  • 阻塞(blocking):教科书年年考的概念——调用方(主线程)发起调用之后挂起直到被调用方法返回。阻塞通信仍然有很多应用场景,典型例子如如spring框架下传统的Spring MVC的Servlet Stack;(如下图)
  • 非阻塞(non-blocking):相对阻塞而言,调用方发起调用之后,不会挂起,而是马上继续执行调用块之后的逻辑。

Spring的两套web堆栈

而同步与异步主要从通信的角度出发:

  • 同步(synchronous):同步机制是指发送方发送请求后,需要等待接收到接收方发回的响应后,才接着发送下一个请求。所以,发送方和接收方对请求的处理步调是一致的;
  • 异步(asynchronous):发送方发出一个请求后,不等待接收方响应这个请求,就继续发送下个请求;接收方处理完成后通知发送方,二者步调不一致。

引用知乎大神的话:这两对概念有一定的区别,不能混淆。两对概念的组合,就会产生四个新的概念,同步阻塞、异步阻塞、同步

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值