一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳解同步異步和阻塞非阻塞

汽車玩家 ? 來源:簡書 ? 作者:coding400 ? 2020-05-03 17:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

同步、異步

同步、異步分別指的是一種通訊方式,當(dāng) cpu 不需要執(zhí)行線程上下文切換就能完成任務(wù),此時便認(rèn)為這種通訊方式是同步的,相對的如果存在cpu 上下文切換,這種方式便是異步。

詳解同步異步和阻塞非阻塞

這里通過一個去食堂打飯的示例來理解什么是同步、異步

同步

假設(shè)現(xiàn)是上午最后一節(jié)課,由于小李上課的教室離食堂比較遠(yuǎn),當(dāng)下課之后,如果小李跑得不夠快,那么到食堂之后會發(fā)現(xiàn)別人已經(jīng)早你一步到達(dá)了,而小李又是個三好學(xué)生,又不能插隊,此時小李只能悲痛欲絕的排在打飯窗口A的隊伍最后一個人后面,依次等待輪到小李填寫菜單然后取飯

異步

同樣的場景,當(dāng)小李跑到食堂之后,由于身體不好,已經(jīng)氣喘吁吁,此時又想找個位置休息下,又太餓,想去排隊打飯。還好,窗口B 提供了這個功能,打飯的人先去取號并填寫菜單,然后就可以去做其他事情,等到排的號到小李了之后,食堂阿姨會通過這個號碼來呼叫你來取已經(jīng)做好的飯,這時你心中一喜,這不就是我現(xiàn)在需要的么,于是你拿了號及填寫菜單之后,便去找個位置占著,一邊等待食堂阿姨叫你來取飯,同時還可以與朋友聊聊人生

總結(jié)可以看出,同步的方式的耗時包含了:1.排隊等待 2.填寫菜單 3.等待廚師做好而異步的方式則可以直接填寫好菜單、取個號然后交給食堂阿姨之后,便可以去做其他的事情,完全沒有等待的耗時,只需要在食堂阿姨呼喚你的時候,來取飯即可。

異步通常能提高系統(tǒng)的吞吐量,從 Servlet 3.0 便支持通過異步的方式來處理請求,當(dāng)然這并不代表它什么都好,缺點是會降低系統(tǒng)的一部分響應(yīng)時間,而且增加了系統(tǒng)的復(fù)雜度,使調(diào)試?yán)щy 同步相對的便是,編程簡單,響應(yīng)速度快,不需要對線程上下文進(jìn)行切換

阻塞、非阻塞

阻塞、非阻塞指的是在同步模式下,如果當(dāng)前線程一直在等待響應(yīng)數(shù)據(jù)并且不能做其他事情那么認(rèn)為是阻塞的,如果當(dāng)前線程在等待響應(yīng)數(shù)據(jù)返回的同時,又可以干其他的時,那么則是非阻塞的

詳解同步異步和阻塞非阻塞

同樣的,這里再次使用食堂打飯的場景

阻塞

當(dāng)小徐到食堂時,已經(jīng)有許多人在排隊打飯了,這時小徐無奈之下,選擇了離她最近的窗口A排隊打飯,然后等待的時間總是漫長的,這時她百般無聊下,想拿出她的手機準(zhǔn)備消磨下時間,結(jié)果她突然想起手機還在教室!雖然站在這里排隊打飯沒有手機玩,但也是不幸中的萬幸了,總算手機沒丟

非阻塞第二次,小徐再次來到食堂,發(fā)現(xiàn)食堂新增了取號的功能,但是只能取號,不能填寫菜單,最終還是選擇了這家取號的窗口B,等著叫號然后寫菜單就可以了,小徐興高采烈的玩起了手機,刷起了簡書

總結(jié)

當(dāng)你排隊在窗口A的時候,此時不能做其他任何事情,只能等著隊伍到自己這,然后填寫菜單,最后等待取飯,此時在整個排隊的周期內(nèi)都不能干其他事情 而在窗口B則可以通過取號的方式,讓你不需要時刻的去站著排隊,而是可以去刷刷簡書、打打游戲

JDK中的BIO 對應(yīng)的就是阻塞IO,NIO 對應(yīng)的是非阻塞IO,通過非阻塞IO,可以讓一個線程處理成千上萬的并發(fā)請求

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11080

    瀏覽量

    217131
  • 阻塞
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    8292
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    CH32V307串口發(fā)送阻塞的原因?如何解決?

    */ modbus_set_rx_mode(master); modbus發(fā)送,不知為何阻塞在rt_device_write,初始化 find open 正常
    發(fā)表于 06-11 08:05

    在testbench中如何使用阻塞賦值和阻塞賦值

    本文詳細(xì)闡述了在一個testbench中,應(yīng)該如何使用阻塞賦值與阻塞賦值。首先說結(jié)論,建議在testbench中,對時鐘信號(包括分頻時鐘)使用阻塞賦值,對其他
    的頭像 發(fā)表于 04-15 09:34 ?660次閱讀
    在testbench中如何使用<b class='flag-5'>阻塞</b>賦值和<b class='flag-5'>非</b><b class='flag-5'>阻塞</b>賦值

    在S32DS上使用JLINK調(diào)試S32K341,被阻塞了,怎么處理?

    我正在嘗試使用 S32K341 在新板上刷寫程序,但在 S32K3X4EVB 上運行并為 S32K341配置的相同代碼出現(xiàn)錯誤。具體來說,當(dāng)我使用 S32DS 的 J-Link 探針運行調(diào)試時,它在此地址被阻塞,并且不會將其閃存到內(nèi)存中。有人遇到同樣的問題或可以幫助我嗎?
    發(fā)表于 04-03 08:13

    FreeRTOS進(jìn)階使用之流緩沖區(qū):高效處理字節(jié)流的秘密武器

    開銷 基于連續(xù)內(nèi)存存儲,相比隊列(每個數(shù)據(jù)項獨立存儲)更節(jié)省RAM。 觸發(fā)通知機制 當(dāng)緩沖區(qū)數(shù)據(jù)量達(dá)到預(yù)設(shè)的觸發(fā)閾值**時,自動喚醒等待的任務(wù),避免輪詢開銷。 阻塞阻塞模式 阻塞
    發(fā)表于 03-24 11:37

    “串口阻塞”你真的會用嗎?

    很久才會發(fā)出來,一下子出來很多數(shù)據(jù)”。經(jīng)過幫客戶檢查應(yīng)用程序源碼,發(fā)現(xiàn)應(yīng)用程序在串口阻塞方面沒有做正確的處理,修改后解決。阻塞打開串口open("/dev/tty
    的頭像 發(fā)表于 02-13 11:42 ?763次閱讀
    “串口<b class='flag-5'>阻塞</b>”你真的會用嗎?

    一文解讀Linux 5種IO模型

    Linux里有五種IO模型:阻塞IO、阻塞IO、多路復(fù)用IO、信號驅(qū)動式IO和異步IO,我發(fā)現(xiàn)這五種IO模型,其實能和吃飯這件事關(guān)聯(lián)起來。 阻塞
    的頭像 發(fā)表于 11-09 11:12 ?864次閱讀
    一文解讀Linux 5種IO模型

    TPA3004功放,開機保護(hù),聲音阻塞,為什么?

    TPA3004功放,開機保護(hù),聲音阻塞。過一段時間,芯片發(fā)熱后正常。詢求問題解決方法
    發(fā)表于 11-08 08:30

    socket編程中的阻塞阻塞

    在網(wǎng)絡(luò)編程中, socket 是一個非常重要的概念,它提供了一個抽象層,使得開發(fā)者可以不必關(guān)心底層的網(wǎng)絡(luò)通信細(xì)節(jié)。 socket 編程中的阻塞阻塞模式是兩種不同的操作方式,它們對程序的響應(yīng)性
    的頭像 發(fā)表于 11-01 16:13 ?754次閱讀

    Verilog HDL的基礎(chǔ)知識

    本文繼續(xù)介紹Verilog HDL基礎(chǔ)知識,重點介紹賦值語句、阻塞阻塞、循環(huán)語句、同步異步、函數(shù)與任務(wù)語法知識。
    的頭像 發(fā)表于 10-24 15:00 ?1205次閱讀
    Verilog HDL的基礎(chǔ)知識

    基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的C++公共基礎(chǔ)類庫案例:SafeBlockQueue

    1、程序簡介該程序是基于OpenHarmony的C++公共基礎(chǔ)類庫的讀寫鎖:SafeBlockQueue。線程安全阻塞隊列SafeBlockQueue類,提供阻塞阻塞版的入隊入隊和
    的頭像 發(fā)表于 08-30 12:41 ?586次閱讀
    基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的C++公共基礎(chǔ)類庫案例:SafeBlockQueue

    SystemView上下文統(tǒng)計窗口識別阻塞原因

    SystemView工具可以記錄嵌入式系統(tǒng)的運行時行為,實現(xiàn)可視化的深入分析。在新發(fā)布的v3.54版本中,增加了一項新功能:上下文統(tǒng)計窗口,提供了對任務(wù)運行時統(tǒng)計信息的深入分析,使用戶能夠徹底檢查每個任務(wù),幫助開發(fā)人員識別阻塞原因。
    的頭像 發(fā)表于 08-20 11:31 ?703次閱讀

    socket阻塞阻塞的區(qū)別是什么

    在計算機編程中,socket 是一種通信端點,用于在網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)傳輸。Socket 可以是阻塞的或阻塞的,這兩種模式在處理數(shù)據(jù)傳輸時有不同的行為。 阻塞模式(Blocking Mo
    的頭像 發(fā)表于 08-16 11:13 ?1247次閱讀

    怎么判斷同步清零和異步清零

    在數(shù)字電路設(shè)計中,清零操作是一種常見的操作,用于將寄存器或計數(shù)器的值清零。清零操作可以分為同步清零和異步清零兩種方式,它們在電路設(shè)計中有著不同的應(yīng)用場景和特點。 同步清零和異步清零的概
    的頭像 發(fā)表于 07-23 11:11 ?5953次閱讀

    異步線路和同步線路怎么區(qū)分

    在通信領(lǐng)域,異步線路和同步線路是兩種基本的數(shù)據(jù)傳輸方式。它們在數(shù)據(jù)傳輸?shù)臅r序、同步機制、傳輸效率等方面存在顯著差異。 1. 異步線路(Asynchronous Communicatio
    的頭像 發(fā)表于 07-23 09:14 ?1199次閱讀

    求助,關(guān)于CyU3PUsbHostEpWaitForCompletion函數(shù)中的阻塞問題求解

    主線程)調(diào)用該函數(shù)時,CyU3PUsbHostEpWaitForCompletion 函數(shù)經(jīng)常阻塞,雖然指定了超時值,但從未返回。 我想應(yīng)該在主程序線程中調(diào)用該函數(shù),以避免出現(xiàn)阻塞問題。 如何正確使用該功能而不造成
    發(fā)表于 07-23 07:57