zoukankan      html  css  js  c++  java
  • 异步|同步&阻塞|非阻塞

    异步|同步:区别在于发出一个功能调用时,是否马上得到返回结果
    阻塞|非阻塞:区别在于调用结果返回之前,当前线程是否挂起

    node.js:单线程、异步非阻塞模型

    单线程与异步不矛盾,与并发是矛盾的

    http://blog.chinaunix.net/uid-26000296-id-3754118.html

    --------------------------------------------------------------------------------------------------------------------

    https://juejin.im/post/5ae6c3ef6fb9a07ab508ac85

    3.1 同步VS异步

    同步和异步通常用来形容一次方法调用。同步方法调用一开始,调用者必须等待被调用的方法结束后,调用者后面的代码才能执行。而异步调用,指的是,调用者不用管被调用方法是否完成,都会继续执行后面的代码,当被调用的方法完成后会通知调用者。比如,在超时购物,如果一件物品没了,你得等仓库人员跟你调货,直到仓库人员跟你把货物送过来,你才能继续去收银台付款,这就类似同步调用。而异步调用了,就像网购,你在网上付款下单后,什么事就不用管了,该干嘛就干嘛去了,当货物到达后你收到通知去取就好。

    3.2 并发与并行

    并发和并行是十分容易混淆的概念。并发指的是多个任务交替进行,而并行则是指真正意义上的“同时进行”。实际上,如果系统内只有一个CPU,而使用多线程时,那么真实系统环境下不能并行,只能通过切换时间片的方式交替进行,而成为并发执行任务。真正的并行也只能出现在拥有多个CPU的系统中。

    3.3 阻塞和非阻塞

    阻塞和非阻塞通常用来形容多线程间的相互影响,比如一个线程占有了临界区资源,那么其他线程需要这个资源就必须进行等待该资源的释放,会导致等待的线程挂起,这种情况就是阻塞,而非阻塞就恰好相反,它强调没有一个线程可以阻塞其他线程,所有的线程都会尝试地往前运行。

    3.4 临界区

    临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用。但是每个线程使用时,一旦临界区资源被一个线程占有,那么其他线程必须等待。

  • 相关阅读:
    8.4 IP地址的划分及子网划分
    8.3 TCPIP协议族
    微软官方宣布:Edge 浏览器将采用 Chromium 内核
    微软官方宣布:Edge 浏览器将采用 Chromium 内核
    微软官方宣布:Edge 浏览器将采用 Chromium 内核
    Web 安全开发规范手册 V1.0
    Web 安全开发规范手册 V1.0
    Web 安全开发规范手册 V1.0
    NET Core入门笔记
    NET Core入门笔记
  • 原文地址:https://www.cnblogs.com/kevin-yuan/p/5582225.html
Copyright © 2011-2022 走看看