• 形象理解同步与异步、阻塞与非阻塞


    同步与异步

    同步与异步:被调用者是否主动告诉调用者结果,重心是被调用者。

    同步与异步通常用来形容一次调用,关注的是消息通信机制。同步调用一旦开始,调用者必须等到调用返回后,才能进行后续的行为。也就是说,调用者主动等待调用的结果。

    而异步则是相反,异步调用发出后,调用就会立即返回,告诉调用者我方收到请求已经去处理,调用者可以继续后续的操作。异步调用的操作通常在另外一个线程内真实的执行,完成后主动通知调用者。整个过程,不会阻碍调用者工作。

    情景案例:烧水壶

    阻塞与非阻塞

    在线程状态的角度,阻塞占了线程6种状态的3种。

    在线程发出请求的角度,我是调用者,我调用一个东西后,在结果返回之前,是否还能做其他事。阻塞和非阻塞的重心是调用者。

    情景案例:烧水壶

    四种组合

    同步与阻塞、异步与非阻塞是比较容易混淆的概念。同步等价于阻塞,异步等价于非阻塞是理解上的误区,是不正确的。

    • 同步阻塞:以烧水壶为例,按下烧水开关之后,我们什么也不做,就一直在那等着,这就叫阻塞;而同步是用来形容水壶的,它不会主动告诉我们结果,需要我们一直盯着水壶是否烧开。
    • 同步非阻塞:非阻塞是指按下烧水开关之后,继续干其他事情。由于是同步的,水壶不会主动告诉我们水是否烧开。因此我们可以每隔几分钟去看下水壶情况。
    • 异步阻塞:异步表示水壶具有提醒功能,发出声音。我们按下烧水开关之后,仍然坐等着,直到水壶发出提醒水烧开,我们将水壶取下来。
    • 异步非阻塞:按下烧水开关后,我们就去干其他事情,听到水壶烧开声音后,取下水壶。
    版权声明:本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    C++防止头文件反复包括
    yppasswd, ypchfn, ypchsh
    yes
    Yacc
    xxd
    xpdf -Portable Document Format(PDF)文件阅读器
    xinetd
    xargs
    x25, PF_X25
    write -在一个文件描述符上执行写操作
  • 原文地址:https://www.cnblogs.com/dtyy/p/14163959.html
Copyright © 2020-2023  润新知