zoukankan      html  css  js  c++  java
  • 同步与异步、阻塞与非阻塞区别

    为了弄清这几个概念还和同事讨论了一番,然后还查了一些资料,总结一下。

    同步与异步是在客户端向服务端发请求的时候,客户端做出的处理方式。

    同步:客户端向服务端发出一个请求,客户端就一直在等着服务端的返回结果。

    异步:客户端向服务端发出一个请求并向服务器说:你处理完了通知我一声哦,我就不在这儿一直等着了。

    阻塞与非阻塞是发起任务的人(线程)的当前状态。

    阻塞:线程A执行到某一行因为X(花费时间)被阻塞了,就一直等待X先执行完了再执行线程A。(挂起)

    非阻塞:线程A执行到某一行因为X(花费时间)被阻塞了,就不管X了,接着处理线程A后面的程序。(运行)

    自己想到在食堂打饭的例子:

    同步:我到食堂打饭,阿姨给我了一个排号,我拿着排号一直等在窗口等待到端饭。

    异步:我到食堂打饭,阿姨给我了一个排号,我就坐在食堂板凳上,等阿姨叫我这个号我再去端饭。

    所以同步与异步强调的是处理方式。

    阻塞:我在等着端饭的过程中,我什么事情也不干,就这样一直等着。

    非阻塞:我在等着端饭的过程中,我拿起手机看了看新闻。

    所以阻塞与非阻塞强调的是线程的状态。

    所以又推演出同步阻塞、同步非阻塞和异步阻塞、异步非阻塞概念。

    这样理解起来就不会搞混淆了。

  • 相关阅读:
    C语言I博客作业03
    C语言I博客作业02
    JSON Template
    Mac系统登录不进系统解决办法
    Mac怎么安装并配置Homebrew?
    tensorflow 安装命令
    删除表重复数据
    redhat安装docker
    Rabbit MQ 入门指南
    Maven 集成Tomcat7插件
  • 原文地址:https://www.cnblogs.com/xubiao/p/6501654.html
Copyright © 2011-2022 走看看