文档章节

同步、异步、阻塞、非阻塞

皂白
 皂白
发布于 2017/08/30 11:04
字数 780
阅读 12
收藏 0

同步VS异步

网络通信中的同步机制和异步机制是描述通信模式的概念。

  • 同步机制

    • 发送方发送请求后,需要等待接收到接收方返回的响应后,才接着发送下个请求
    • 所有的请求在服务端得到同步,发送方和接收方对请求的处理步调是一致的
  • 异步机制

    • 发送方发送请求后,不等待接收方响应这个请求,就继续发送下个请求
    • 所有来自发送方的请求形成一个队列,接收方处理完成后通知发送方

阻塞VS非阻塞

阻塞和非阻塞用来描述进程处理调用的方式,在网络通信中,主要指网络套接字Socket的阻塞和非阻塞方式,而Socket的实质也就是IO操作。

  • 阻塞
    • 调用结果返回之前,当前线程从运行状态被挂起,一直等到调用结果返回之后,才进入就绪状态
  • 非阻塞
    • 如果调用结果不能马上返回,当前线程也不会被挂起,而是立即返回执行下一个调用

在网络通信中,经常可以看到有人将同步和阻塞等同、异步和非阻塞等同。事实上,这两对概念有一定的区别,不能混淆。两对概念的组合,就会产生四个新的概念,同步阻塞、异步阻塞、同步非阻塞、异步非阻塞。

同步阻塞

发送方向接收方发送请求后,一直等待响应;接收方处理请求时进行的IO操作如果不能马上得到结果,就一直等到返回结果后,才响应发送方,期间不能进行其他工作。

同步非阻塞

发送方向接收方发送请求后,一直等待响应;接收方处理请求时进行的IO操作如果不能马上得到结果,就立即返回,去做其他事情,但由于没有得到请求处理结果,不响应发送方,发送方一直等待。一直到IO操作完成后,接收方获得结果响应发送方后,发送方才进入下一次请求过程。

异步阻塞

发送方向接收方发送请求后,不用等待响应,可以接着进行其他工作;接收方处理请求时进行的IO操作如果不能马上得到结果,就一直等到返回结果后,才响应发送方,期间不能进行其他工作。

异步非阻塞

发送方向接收方发送请求后,不用等待响应,可以继续其他工作;接收方处理请求时进行的IO操作如果不能马上得到结果,也不等待,而是马上返回去做其他事情。当IO操作完成以后,将完成状态和结果通知接收方,接收方再响应发送方。

参考资料

《Nginx高性能Web服务器详解》

© 著作权归作者所有

共有 人打赏支持
皂白
粉丝 32
博文 34
码字总数 19277
作品 0
朝阳
程序员
私信 提问

暂无文章

开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
37分钟前
1
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
37分钟前
2
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
54分钟前
2
0
IntelliJ IDEA 第一个 Scala 程序

IntelliJ 安装完成 Scala 插件后,你需要尝试使用 IntelliJ 来创建并且运行第一个程序。 通常这个程序只是简单的输出 Hello World。 创建一个新工程 在文件下面选择新建,然后选择创建工程。...

honeymose
58分钟前
2
0
csapp 习题 - 如何实现异或 exclusive-or

阅读 csapp v3 时,练习题 2.13 很有意思。练习题描述如下。 位设置是对于参数 mask 中每一个为 1 的位,那么参数 x 中相应位则被设置为 1 ;位清除是对于参数 mask 中每一个为 1 的位,那么...

ylme
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部