• io模型


    1.四种模型

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

    2.同步异步之说

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

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

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

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

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

    4.模型详细说明

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

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

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

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

    原创:做时间的朋友
  • 相关阅读:
    springcloud-spring cloud config统一配置中心
    springcloud-hystrix断路器对微服务的容错处理
    springcloud-feign组件实现声明式的调用
    springcloud-Ribbon-负载均衡组件
    springcloud-Eureka-服务注册与发现核心组件
    springcloud入门-什么是springcloud
    Redis缓存设计及常见问题
    Lucene全文检索入门使用
    redis安装、使用
    nodejs环境 + 入门 + 博客搭建
  • 原文地址:https://www.cnblogs.com/PythonOrg/p/14919733.html
Copyright © 2020-2023  润新知