zoukankan      html  css  js  c++  java
  • Unix下5种I/O模型

    Unix下I/O模型主要分为5种:

    (1)阻塞式I/O

    (2)非阻塞式I/O

    (3)I/O复用(select和poll)

    (4)信号驱动式I/O

    (5)异步I/O

    1、阻塞式I/O模型

    unix基本的套接字接口,例如:connect、accept、read/write、recv/send、recvfrom/sendto、recvmsg/sendmsg,它们默认是阻塞的。

    2、非阻塞式I/O模型

    调用fcntl可以把一个套接字设置成非阻塞式。

    3、I/O复用模型

    I/O复用是通过调用select或者poll,阻塞在这两个系统调用之上,而不是阻塞在真正的I/O系统调用上。

    4、信号驱动式I/O模型

    我们首先开启套接字的信号驱动式I/O功能,并通过sigaction系统调用安装一个信号处理函数。该系统调用将立即返回,当数据包准备好读取时,内核就为该进程产生一个SIGIO信号。我们可以在信号处理函数中读取数据包。

    5、异步I/O模型

    告知内核启动某个操作,并让内核在整个操作完成后(包括将数据从内核复制到我们的缓冲区)通知我们。这种模型和前面信号驱动模型的区别在于:信号驱动式I/O是由内核通知我们何时可以启动一个I/O操作,而异步I/O模型是由内核通知我们I/O操作何时完成。

    五种I/O模型比较:

    参考:UNIX网络编程卷1:套接字联网API(第三版)

  • 相关阅读:
    数组操作方法和迭代方法
    三元运算符
    数组求和/去重
    javascript保留字
    window.onload和document.ready区别
    alert()和consloe.log()区别
    Eventutil函数封装
    前端中的事件流
    react的生命周期
    小程序初体验
  • 原文地址:https://www.cnblogs.com/justkong/p/7192896.html
Copyright © 2011-2022 走看看