• 阻塞与非阻塞 ,同步 与异步的区别


    1 同步 与异步

    同步和异步关注的是消息通信机制,同步,就是发起一个调用后,在没有得到结果前,该调用不返回,一旦调用返回,就得到返回值,

    就是调用者主动等待这个 调用的结果 ,

    异步相反,调用发出后,就直接返回,没有返回结果 ,当一个异步过程调用发出后,调用者不会立刻得到结果 ,而是在调用发出后,由被调用者通过状态,通知来通知被调用者,或通过回调函数 处理这个 调用,典型的异步编程 模型如node js

    比如你去书店找一本书 三国演义,你给书店老板说书名后,同步是书店老板找啊找,可能找一分钟,可能一天,他找到后,再把书给你,异步是,老板让你先回去,等找到后给你回电话,

    阻塞和非阻塞  关注的是程序在等待调用结果时的状态,

    阻塞 是指结果返回前,程序 会一直挂起, 走直到结果返回

    非阻塞是结果 返回前,程序 的该线程会一直执行,

    还是上面那个例子,阻塞是,报完书名后 ,,你一直在那儿等着,什么也不干,非阻塞是,报完书名后,你去干其他事,同时中间时不时去打电话问下书店老板

    阻塞/非阻塞  进程/线程需要的数据是否就绪,进程 线程是否需要等待

    同步 异步   :访问数据 的方式,同步 需要主动读写数据 ,在读写数据 过程中还是会阻塞

    异步只需要I/O 操作完成的通知,并不主动读写数据 ,由于操作系统 内核完成数据 读写

    水壶例子,老张烧水

    同步阻塞: 老张一直等水烧开 

    异步阻塞:老张用会响的水壶烧水,然后一直等

    同步非阻塞,老张不等,时不时去看看水是否烧开

    异步非阻塞,老张用会响的水壶,,然后水烧开后,老张听到响声去打水,

    关键,同步 和异步关注的是消息的处理机制,  阻塞,非阻塞,关注的是进程是否被挂起,

  • 相关阅读:
    mybatis入参错误:There is no getter for property named ‘status‘ in ‘class java.lang.Integer‘
    JAVA程序员面试笔试题(一)
    Java8新特性LocalDateTime获取周几
    linux常用命令记录 screen
    ubuntu 19.04 + lenovo-xiaoxin-I2000 触摸板右键单击无法使用
    华为交换路由常用命令
    centos7常用软件
    一般网络延迟高的原因
    华为防火墙进程&简单配置
    私网互联(本质是三层路由)
  • 原文地址:https://www.cnblogs.com/xqnq2007/p/7755785.html
Copyright © 2020-2023  润新知