zoukankan      html  css  js  c++  java
  • 阻塞/非阻塞、异步/同步的区别

    1、同步和异步关注的消息通信机制:

       同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发I/O操作并等待或者轮询的去查看I/O操作是否就绪,而异步是指用户进程触发I/O操作以后便开始做自己的事情,而当I/O操作已经完成的时候会得到I/O完成的通知。

         例如:拥有文件句柄的进程能够实时收到内核发给他的SIGIO信号。

    2、阻塞和非阻塞:

        阻塞和非阻塞是针对于进程在访问数据的时候,根据I/O操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作函数的实现方式,阻塞方式下读取或者写入函数将一直等待,而非阻塞方式下,读取或者写入函数会立即返回一个状态值。(例如:

    进程对于文件指针的读写操作不会阻塞于buffer为空的情况。)

         对于unix来讲,阻塞式I/O,非阻塞式I/O,I/O复用(select、pool、epoll)都属于同步I/O,因为他们在数据由内核空间复制回用户空间的进程缓冲区

         时是阻塞的,只有AIO是完全符合异步I/O要求的。即:数据准备完成,由内核空间拷贝回缓冲区后再通知进程。

          

  • 相关阅读:
    LeetCode 914. 卡牌分组
    LeetCode 999. 车的可用捕获量
    LeetCode 892. 三维形体的表面积
    21航电5E
    min25筛 学习笔记
    牛客多校6G
    2021航电多校3
    2021牛客多校H
    [模版] 快速傅里叶变换
    2021牛客多校第五场
  • 原文地址:https://www.cnblogs.com/guagua2016/p/5956406.html
Copyright © 2011-2022 走看看