美文网首页
阻塞与非阻塞、同步与异步

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

作者: couriravant | 来源:发表于2020-07-21 16:16 被阅读0次

同步异步是基于任务序列可靠性的角度区分:

同步和异步的区别在于任务执行方和任务发起方是否在同一线程或者进程;同步指任务的发起方和执行方在同一个线程中完成;异步是一种常见的提升吞吐的手段,指任务的发起方和执行方在不同的线程中完成。

阻塞、非阻塞从cpu消耗角度去区分:

所谓的阻塞基本是内核数据准备的过程,这块消耗时间。
阻塞就是让CPU闲置,等IO等慢操作完成之后再继续。
非阻塞则是在等IO等慢操作的完成的同时,CPU去做一些其他事情。存在上下文切换。
阻塞非阻塞的选择就是在CPU利用率和系统切换成本之间的平衡。

image.png

linux下的几种IO模型:

当我们进行IO操作的时候,如果被调用者将任务全部执行完返回,称为同步/阻塞 IO

image

如果被调用者,不管没有操作成功,直接返回一个结果码,但是不再主动通知后续结果,称为非阻塞IO;这种情况下需要重复调用查询状态。

image

如果被调用者,不管有没有操作成功,直接返回个结果码,等到全部操作完成之后再发一个信号通知调用者,称为异步IO

image

举个例子:
家里有个专门帮忙做饭的阿姨,有一天我想喝水了,我让阿姨帮忙烧一壶水。

我看着她去烧水,灌水,给我倒水,期间没有做其他任何事情,这就是同步。

我想着也不用一直等,可以先看会儿电视,我就隔一会儿来看一次,隔一会儿来看一次,这叫非阻塞。

再想想,这也烦,我索性跟阿姨说,好了叫我一声,然后就去看电视去了,这叫异步。

而IO多路复用,信号驱动IO则是基于前面四个模型的衍生。

IO多路复用是基于阻塞IO的衍生,主要是为了提高内核空间数据准备这一块的功能复用,即阻塞的同时监听多个端口,有一个端口有数据就进行处理,提高性能。

image

Java中的IO则分为以下几种

同步阻塞IO(Java IO)

l 用户进程发起一个IO操作之后,必须等待IO操作完成。

同步非阻塞IO(Java NIO)

l 用户发起一个IO操作之后,返回做其他事情,时不时的去询问IO是否就绪。

多路复用IO

l 用户发起一个IO操作之后,返回,等内核完成IO之后通知应用程序,这里的阻塞是指返回之后并没有做其他是,而是一并监听多个文件句柄,在select函数中,提高系统并发性。

异步非阻塞IO(Java NIO2)

l 用户发起一个IO操作之后,返回,等待 内核数据准备 和 用户空间拷贝都完成之后通知应用进程。

相关文章

  • UNIX 的5种IO模型介绍

    IO模型同步、异步、阻塞、非阻塞socket阻塞与非阻塞,同步与异步 同步和异步 同步/异步主要针对C端-同步就像...

  • Linux网络IO模型

    什么是同步与异步、阻塞与非阻塞 引用知乎 怎样理解阻塞非阻塞与同步异步的区别? 上面的一个回答,很生动的说明了同步...

  • 同步异步和阻塞非阻塞_190220

    简介 一个知乎连接说的很好作者:严肃链接:同步异步和阻塞非阻塞来源:知乎“阻塞”与"非阻塞"与"同步"与“异步"不...

  • 谈论:同步异步阻塞非阻塞.md

    同步/异步:关注的方式(是否主动) 阻塞/非阻塞: 同步阻塞BIO: 同步非阻塞NIO: 异步非阻塞: 异步阻塞:

  • 01 基本概念

    同步 异步 阻塞 非阻塞 同步与异步关注的是消息通信机制,阻塞与非阻塞关注的是程序在等待调用结果(消息,返回值)时...

  • 聊聊Linux 五种IO模型【转载】

    上一篇《聊聊同步、异步、阻塞与非阻塞》已经通俗的讲解了,要理解同步、异步、阻塞与非阻塞重要的两个概念点了,没有看过...

  • 聊聊Linux 五种IO模型

    上一篇《聊聊同步、异步、阻塞与非阻塞》已经通俗的讲解了,要理解同步、异步、阻塞与非阻塞重要的两个概念点了,没有看过...

  • Netty基础-JAVA IO模型

    java - IO模型 BIO NIO AIO 同步与异步,阻塞与非阻塞 同步与异步是面向多个线程协作的情况。 假...

  • I/O模型笔记

    #0 同步异步、阻塞非阻塞 同步异步是从消息通知机制角度来说的 阻塞与非阻塞是从程序(线程)等待消息通知时的状态角...

  • NIO基础之同步、异步、阻塞、非阻塞

    这里区分几个概念,也是常见但是容易混淆的概念,就是标题中的同步、异步、阻塞、非阻塞。 一、同步与异步 同步与异步,...

网友评论

      本文标题:阻塞与非阻塞、同步与异步

      本文链接:https://www.haomeiwen.com/subject/hbpikktx.html