白話解說:阻塞和非阻塞,同步和異步

  1. 阻塞和非阻塞,同步和異步是node.js里經常遇到的詞匯,舉例說明:

    我要看足球比賽,但是媽媽叫我燒水,電視機在客廳,燒水要在廚房。家里有2個水壺,一個是普通的水壺,另一個是水開了會叫的那種水壺。我可以:

    1. 用普通的水壺燒,人在邊上看著,水開了再去看球。(同步,阻塞)這個是常規做法,但是我看球不爽了。
    2. 用普通水壺燒,人去看球,隔幾分鐘去廚房看看。(同步,非阻塞)這個又大問題,萬一在我離開的幾分鐘水開了,我就麻煩了。
    3. 用會叫的水壺,人在邊上看著。(異步,阻塞)這個沒有問題,但是我太傻了。
    4. 用會叫的水壺,人去看球,聽見水壺叫了再去看。(異步,非阻塞)這個應該是最好的。

    等著看球的我:阻塞

    看著電視的我:非阻塞

    普通水壺:同步

    會叫的水壺:異步

    所以,異步往往配合非阻塞,才能發揮出威力。

阻塞和非阻塞1.阻塞:就像單線程cpu一樣,一個任務由多個小任務組成,但是只能一個任務接一個任務流程的往想下走,誰在任務排序的前面就誰先執行,執行完了進行下一個,如果遇到錯誤,下面的小任務就不要做了,一直卡住。2.非阻塞:就像多線程cpu一樣,一個任務由多個小任務組成,可以分開線程來做,每個線程做分配到的任務,完成了對應的任務就行,某個線程的任務沒做完那就做報對應的錯,其他的不受影響。
  1. 步:要做的事列了一個清單,按照清單上的順序 一個一個執行。

    異步:就是可以同時干好幾件事。

    阻塞:就是按照清單上的順序一件一件的往下走,任意一件事沒有做完,下面的事都干不了。

    非阻塞:就是有事沒有作完,后面的事不會等這件事干完了再作,而是直接開始作下一件事,等這件事作完了,后面的事也作完了,這樣就大大提高了效率。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448590.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448590.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448590.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

蘇嵌點滴(一)

來蘇嵌也有12天了,也漸漸開始習慣這樣的生活,每天睜眼到閉眼,全都是代碼。每天都得學習很多新的知識,C語言學到現在也學得差不多了,還有明天一天課。 指針、數組這些C語言中的重點,還是需要一點時間消化的…

Mysql學習總結(8)——MySql基本查詢、連接查詢、子查詢、正則表達查詢講解...

2019獨角獸企業重金招聘Python工程師標準>>> 查詢數據指從數據庫中獲取所需要的數據。查詢數據是數據庫操作中最常用,也是最重要的操作。用戶可以根據自己對數據的需求,使用不同的查詢方式。通過不同的查詢方式,可以獲得不同的數據…

安裝OpenCL和AMD驅動程序

我們將安裝AMD OpenCL軟件開發工具包(SDK)和AMD驅動程序。 userubuntu:~$ mkdir AMD-APP-SDK-v2.5-lnx64 userubuntu:~$ cd AMD-APP-SDK-v2.5-lnx64/ userubuntu:~$ wgethttp://developer.amd.com/Downloads/AMD-APP-SDK-v2.5-lnx64.tgz userubuntu:~$ t…

Node.js -- Stream 使用小例 ( 流運用 :讀取、寫入、寫出、拷貝)

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 Stream 是一個抽象接口,Node 中有很多對象實現了這個接口。例如,對http 服務器發起請求的request 對象就是一個 …

李洋瘋狂C語言之有關“you are come from shanghai”逆序(二)

今天將指針和函數全部學完了&#xff0c;之前這題的做法&#xff0c;現在看來有點繁瑣&#xff0c;于是乎做了一些修改&#xff0c;下面是新的代碼 //you are from shanghai逆序#include <stdio.h> #include <string.h> //下面要用到strlenvoid reverse(c…

sync - 清空文件系統緩沖區

總覽 (SYNOPSIS) sync [OPTION] 描述 (DESCRIPTION) 強迫把更改的塊寫入磁盤&#xff0c; 并更新超級塊。 --help顯示幫助然后終止。--version顯示版本信息然后終止。 轉載于:https://www.cnblogs.com/fanweisheng/p/11101219.html

學會用好 Visual Studio Code

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Visual Studio Code是個牛逼的編輯器&#xff0c;啟動非常快&#xff0c;完全可以用來代替其他文本文件編輯工具。又可以用來做開發&…

蘇嵌點滴(二)

今天把指針和函數講完了&#xff0c;這些都還能接受&#xff0c;之后老師和我們講了遞歸&#xff0c;有點難度。 晚上電腦還出了點狀況&#xff0c;一個晚自習全用來重裝系統和學習軟件套裝X_X&#xff0c;調試完已經接近下課&#xff0c;遞歸還沒來得及看。 放學后&#xff…

Maven學習總結(五)——聚合與繼承

2019獨角獸企業重金招聘Python工程師標準>>> Maven學習總結(五)——聚合與繼承 一、聚合 如果我們想一次構建多個項目模塊&#xff0c;那我們就需要對多個項目模塊進行聚合 1.1、聚合配置代碼 1 <modules> 2 <module>模塊一</module> 3 …

19-6/28作業:100以內偶數求和

?作業要求 ?分析思路 在循環里面增加約束&#xff0c;使累加1變成累加2 ?do-while循環代碼 public class GaoSiFor { public static void main(String[] args) { //定義兩個變量 int sum 0; int i 0; //開始循環 do{ //…

Visual Studio Code 常用快捷鍵

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、常用快捷鍵 編輯器與窗口管理 打開一個新窗口&#xff1a; CtrlShiftN 關閉窗口&#xff1a; CtrlShiftW 新建文件 CtrlN 文件之間切…

李洋瘋狂C語言之用遞歸解決李白喝酒問題(附填空題解法)

這是14年藍橋杯的一道填空題 題目&#xff1a;“李白街上走&#xff0c;提壺去買酒&#xff0c;遇店加一倍&#xff0c;見花喝一斗”&#xff0c; 途中&#xff0c;遇見5次店&#xff0c;見了10此花&#xff0c;壺中原有2斗酒&#xff0c;最后剛好喝 完酒&#xff0c;要求最…

coco creator編輯動畫坑之拖圖片

如圖所示&#xff0c;批量選中多張圖片之后&#xff0c;拖到右下角的框中&#xff0c;發現有時候可以有時候不行。這個我覺得是個軟件的bug 后來經過測試發現只有在粉紅色圈的高度才可以正確放入圖片&#xff0c;否則都放不了。轉載于:https://www.cnblogs.com/codeDevotee/p/1…

Spring MVC常用注解說明

2019獨角獸企業重金招聘Python工程師標準>>> 使用Spring MVC的注解及其用法和其它相關知識來實現控制器功能。02 之前在使用Struts2實現MVC的注解時&#xff0c;是借助struts2-convention這個插件&#xff0c;如今我們使用Spring自帶的spring-webmvc組件來實現同…

Ubuntu12.10中安裝ati顯卡驅動amd driver 13.1

1. 先安裝依賴庫 [plain] view plaincopyprint?sudo apt-get install build-essential cdbs dh-make dkms execstack dh-modaliases fakeroot libqtgui4 debhelper debconf libstdc6 dkms libqtgui4 libelfg0 linux-headers-generic 2. 如果是64位系統&#xff0c;需要安裝3…

李洋瘋狂C語言之用遞歸解決李白喝酒問題(二)

之前用遞歸求出了多少種情況&#xff0c;如果要打印出所有的結果&#xff0c;就需要一個數組來存放可能的情況&#xff1a; /****************************************************** 題目&#xff1a;“李白街上走&#xff0c;提壺去買酒&#xff0c;遇店加一倍&#xff0c;…

vue.js 三種方式安裝 ( vue-cli ) 、安裝詳解、創建項目

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Vue.js&#xff08;讀音 /vju?/, 類似于 view&#xff09;是一個構建數據驅動的 web 界面的漸進式框架。Vue.js 的目標是通過盡可能簡單…

C學習筆記:基礎

C 語言是一種面向過程的高級語言。 運行速度與匯編語言編寫的代碼運行速度幾乎一樣。C 語言的源碼文件擴展名為 .c 例如 hello.c 。 概述 C 語言有三套標準分別是 C89 C99 C11&#xff0c;目前最常用的是 C99 標準。 C 編譯器&#xff0c;寫在源文件中的源代碼需要編譯&#xf…

spring-boot

1,創建springboot 工程 2.導入你所需要的包, (這篇只是簡單介紹一下,沒導入太過復雜的包)Developer tools Sprig Boot DevTools LombokWed Spring Wed Starter 轉載于:https://www.cnblogs.com/lxx-1843693653/p/11104622.html

李洋瘋狂C語言之合法幀

題目: 輸入一個字符串,同時輸入幀頭和幀尾(可以是多個字符),將該字符串中合法的幀識別出來. 提示:幀頭和幀尾分別是head和tail 字符串”asdheadhauboisoktail”中headhauboisoktail是合法幀 #include <stdio.h> #include <string.h> #include <stdlib.h>ch…