`
chembo
  • 浏览: 938707 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于IO的同步,异步,阻塞,非阻塞

阅读更多
网上查了一下以上概念,以下做些总结:
IO模型:
目前unix存在五种IO模型,分别是:
    阻塞型 IO(blocking I/O)
    非阻塞性IO(nonblocking I/O)
    IO多路复用(I/O multiplexing)
    信号驱动IO(signal driven I/O)
    异步IO(asynchronous I/O)

IO的两个阶段:
    等待数据准备好
    将数据从内核缓冲区复制到用户进程缓冲区

同步与异步IO:
    同步IO,需要用户进程主动将存放在内核缓冲区中的数据拷贝到用户进程中。
    异步IO,内核会自动将数据从内核缓冲区拷贝到用户缓冲区,然后再通知用户。

这样,同步和异步的概念就非常明显了。以上的五种IO模型,前面四种都是同步的,只有第五种IO模型才是异步的IO。

阻塞和非阻塞:
阻塞,非阻塞,是针对单个进程而言的。

结论:
    判断IO是同步还是异步,是看谁主动将数据拷贝到用户进程。
    select或者poll,epoll,是同步调用,进行此调用的用户进程也处于阻塞状态。
    javaScript或者nodejs中的读取网络(文件)数据,然后提供回调函数进行处理,是异步IO。


分享到:
评论

相关推荐

    同步异步阻塞非阻塞

    同步异步阻塞非阻塞 IO 模型 在 Linux 环境下的网络 IO 中,有五种基本的 IO 模型:阻塞 IO、非阻塞 IO、IO 多路复用、信号驱动 IO 和异步 IO。其中,信号驱动 IO 不常用,因此主要介绍其余四种 IO 模型。 1. 阻塞...

    IO中同步、异步与阻塞、非阻塞的区别

    在软件开发领域,尤其是在涉及输入输出(IO)操作时,理解同步与异步、阻塞与非阻塞的概念是非常重要的。这些概念对于设计和实现高效的程序至关重要,尤其是在高并发和分布式系统中。 一、同步与异步 同步和异步是...

    网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO

    这里我们将深入探讨同步IO、异步IO、阻塞IO和非阻塞IO的概念,理解它们的工作原理以及在实际应用中的差异。 1. 同步IO与异步IO: - **同步IO**:在同步模式下,应用程序执行I/O操作时会等待操作完成。这意味着程序...

    网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO.pdf

    同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non...

    JAVA IO同步,异步

    在本文中,我们将讨论基于系统底层通信技术Socket 的JAVA IO同步和异步操作,包括阻塞(Blocking)和非阻塞(Non-Blocking)IO 操作。 同步(Synchronous)IO 同步IO 是指应用程序在执行IO 操作时,需要等待IO ...

    同步、异步、阻塞、非阻塞的区别

    ### 同步、异步、阻塞、非阻塞的区别详解 #### 一、同步与异步 **同步**和**异步**是计算机编程中非常重要的概念,尤其是在多线程编程、网络通信以及操作系统中有着广泛的应用。这两个概念主要涉及的是**消息的...

    同步与异步--阻塞与非阻塞型IO

    根据I/O操作的不同特性,可以将其分为四大类:同步阻塞IO、同步非阻塞IO、异步阻塞IO以及异步非阻塞IO。本文将详细介绍这四种不同的I/O模型,帮助读者理解它们之间的差异及应用场景。 #### 二、同步阻塞IO 同步阻塞...

    同步异步阻塞非阻塞I/O思维导图

    同步异步,阻塞非阻塞,I/O学习总结的思维导图,需要结合Richard Stevens的书来学习

    详解socket阻塞与非阻塞,同步与异步、I/O模型

    总结来说,同步与异步是关于处理结果获取方式的不同策略,而阻塞与非阻塞是关于处理过程中线程状态管理的差异。在实际的Socket网络编程中,开发者需要根据应用需求选择合适的组合,以达到高效、响应快速的系统设计。...

    简述JAVA同步、异步、阻塞和非阻塞之间的区别

    在IO操作中,我们可以将同步、异步、阻塞和非阻塞四种模式组合起来,形成四种不同的IO模式:同步阻塞IO、异步阻塞IO、同步非阻塞IO和异步非阻塞IO。同步阻塞IO是指Sender在发送请求后,等待Receiver的响应,直到...

    java 中同步、异步、阻塞和非阻塞区别详解

    在Java编程中,同步、异步、阻塞和非阻塞是四个重要的概念,它们涉及到多线程和并发处理,特别是在网络编程中尤为关键。理解这些概念有助于优化程序性能和提高资源利用率。 1. **同步**: 同步是编程中一种控制机制...

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

    同步与异步、阻塞与非阻塞是计算机科学中关于I/O操作的两种关键概念,它们描述的是程序处理输入/输出(IO)时的不同方式。 同步与异步主要涉及的是程序等待IO操作完成的方式。同步IO指的是在发出IO请求后,程序会...

    2-Socket阻塞与非阻塞,同步与异步、IO模型-120412发布1

    在IT领域,特别是网络编程中,我们经常遇到“同步”、“异步”、“阻塞”和“非阻塞”这些概念。这些术语是理解和优化应用程序性能的关键,特别是涉及到客户端(C端)与服务器(S端)之间的通信时。 首先,让我们...

    4-【Linux网络编程】同步,异步,阻塞,非阻塞-1809261

    【Linux网络编程】同步、异步、阻塞与非阻塞的概念在计算机科学特别是网络编程领域至关重要。在Linux环境下,理解和运用这些概念对于优化应用程序性能和处理并发I/O至关重要。 同步(Synchronous)I/O指的是应用...

    异步非阻塞socket聊天室程序

    相反,异步非阻塞模式允许进程在等待数据时立即返回,继续处理其他任务,当数据准备就绪时,操作系统通过事件通知(如IO完成端口或信号量)来唤醒进程。这种方式提高了系统的并发处理能力,更适用于高并发的聊天室...

    java 同步、异步、阻塞和非阻塞分析

    总结来说,Java中的同步、异步、阻塞和非阻塞是处理并发和IO操作时的重要策略。同步与异步关注任务的执行顺序,而阻塞与非阻塞关注程序执行流程是否会被中断。理解并合理运用这些概念,可以帮助开发者编写出更加高效...

    同步、异步IO

    在Java中,可以查看NIO相关的类,如java.nio.channels.Selector、java.nio.channels.SocketChannel等,研究它们如何实现非阻塞IO。在Node.js中,可以研究libuv库,它是Node.js实现异步IO的基石,提供了对多种平台的...

    科学知识:同步、异步、阻塞和非阻塞区别

    同步、异步、阻塞和非阻塞是计算机科学中关于程序执行模式的重要概念,尤其在多线程、网络编程和并发处理中扮演关键角色。理解这些概念有助于编写高效、响应迅速的应用程序。 同步(Synchronous)和异步...

    IO模型中的阻塞模型和非阻塞模型

    除了阻塞和非阻塞的区别外,IO操作还可以按照是否有显式的通知机制分为同步(Synchronous)和异步(Asynchronous): - **同步IO**:在同步IO中,进程或线程必须等待IO操作完成之后才能继续执行后续操作。无论是...

    linux异步IO.pdf

    3. **异步阻塞I/O**:结合了非阻塞I/O和阻塞通知机制,如select/poll/epoll,用于检测I/O描述符的状态变化。虽然提供了多描述符通知的便利,但在高性能场景下效率不足。 4. **异步非阻塞I/O(AIO)**:真正实现了I/O...

Global site tag (gtag.js) - Google Analytics