zoukankan      html  css  js  c++  java
  • io模型

    1.四种模型

    同步阻塞,同步非阻塞,异步阻塞,异步非阻塞

    2.同步异步之说

    是线程之间调用的说法
    调用者与被调用者,它们是线程之间的关系
    两个线程要么是同步,要么是异步

    同步操作:调用线程需要等待被调用线程返回结果,才会进行下一步
    异步操作:调用线程不需要等待被调用线程返回结果,被调用线程一版依赖事件,回调等机制来通知调用者结果

    3.阻塞非阻塞之说(一版说的都是IO)

    阻塞与非阻塞,说的是线程内的关系
    程序在等待调用结果(消息,返回值,IO返回数据)时的状态:
    阻塞:调用结果返回前,当前线程被挂起,调用线程得到结果后才会返回
    非阻塞:不能立刻得到结果之前,该调用不会阻塞当前线程。

    什么是阻塞?
    阻塞本质上是操作系统将线程状态变成阻塞,剥夺线程的CPU使用权,线程只有被唤醒(状态变为可执行)后,操作系统才会重新调度执行他

    4.模型详细说明

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

    同步非阻塞IO:
    发送方发送请求之后,一直等待响应。
    接受方处理请求时进行的IO操作如果不能马上的得到结果,就立即返回,取做其他事情。
    但是由于没有得到请求处理结果,不响应发送方,发送方一直等待。
    当IO操作完成以后,将完成状态和结果通知接收方,接收方再响应发送方,发送方才进入下一次请求过程。(实际不应用)

    异步阻塞IO:
    发送方向接收方请求后,不等待响应,可以继续其他工作。
    接收方处理请求时进行IO操作如果不能马上得到结果,就一直等到返回结果后,才响应发送方,期间不能进行其他操作。 (实际不应用)

    异步非阻塞IO:
    发送方向接收方请求后,不等待响应,可以继续其他工作。
    接收方处理请求时进行IO操作如果不能马上得到结果,也不等待,而是马上返回去做其他事情。
    当IO操作完成以后,将完成状态和结果通知接收方,接收方再响应发送方。(效率最高)

    原创:做时间的朋友
  • 相关阅读:
    Oracle Drop表并未直接删除 drop table xx purge
    Notepad++使用
    Python使用MySQL数据库
    考驾照科目二科目三要点记录
    Linux中权限(r、w、x)对于目录与文件的意义
    linux之expr命令
    linux下scp
    数字货币和区块链联系
    网站
    关于linux 编程
  • 原文地址:https://www.cnblogs.com/PythonOrg/p/14919733.html
Copyright © 2011-2022 走看看