精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

汽車玩家 ? 來源:簡書 ? 作者:coding400 ? 2020-05-03 17:53 ? 次閱讀

同步、異步

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

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

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

同步

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

異步

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

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

異步通常能提高系統的吞吐量,從 Servlet 3.0 便支持通過異步的方式來處理請求,當然這并不代表它什么都好,缺點是會降低系統的一部分響應時間,而且增加了系統的復雜度,使調試困難 同步相對的便是,編程簡單,響應速度快,不需要對線程上下文進行切換

阻塞、非阻塞

阻塞、非阻塞指的是在同步模式下,如果當前線程一直在等待響應數據并且不能做其他事情那么認為是阻塞的,如果當前線程在等待響應數據返回的同時,又可以干其他的時,那么則是非阻塞的

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

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

阻塞

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

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

總結

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10702

    瀏覽量

    209391
  • 阻塞
    +關注

    關注

    0

    文章

    24

    瀏覽量

    8069
收藏 人收藏

    評論

    相關推薦

    socket阻塞阻塞的區別是什么

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

    請問使用lwip創建socket,該如何做到阻塞的接收發送數據?

    請問使用lwip創建socket,該如何做到阻塞的接收發送數據?
    發表于 06-19 06:02

    什么是阻塞阻塞

    什么是阻塞阻塞?我們就用管道的讀寫來舉例子。
    的頭像 發表于 03-25 10:04 ?374次閱讀

    verilog同步異步的區別 verilog阻塞賦值和阻塞賦值的區別

    Verilog是一種硬件描述語言,用于設計和模擬數字電路。在Verilog中,同步異步是用來描述數據傳輸和信號處理的兩種不同方式,而阻塞賦值和
    的頭像 發表于 02-22 15:33 ?1183次閱讀

    進程由執行態變為阻塞態的主要原因

    進程在運行過程中,可能由于各種原因而從執行態變為阻塞態。主要原因包括以下幾個方面。 首先,進程可能由于等待外部資源而進入阻塞態。例如,當進程需要從硬盤讀取數據時,由于硬盤的讀取速度相對較慢,進程需要
    的頭像 發表于 11-17 14:14 ?2228次閱讀

    什么事件會使執行變成阻塞

    執行阻塞是指當一個進程無法繼續執行時被掛起的狀態。這可以由多種事件引起,下面詳細介紹了一些常見的情況: I/O操作阻塞:在進行文件讀寫、網絡通信、數據庫訪問等I/O操作時,如果所需的數據還沒有
    的頭像 發表于 11-17 14:08 ?678次閱讀

    運行狀態變為阻塞狀態的條件

    在計算機科學中,阻塞是指當一個進程(或線程)由于等待某種外部事件的發生,無法繼續執行的狀態。阻塞可能會在不同的情況下發生,例如等待用戶輸入、等待數據從網絡到達、等待磁盤讀寫完成等等。本文將詳細探討
    的頭像 發表于 11-17 11:45 ?1243次閱讀

    阻塞態可以直接到運行態嗎

    阻塞態即是指進程或線程在等待某種事件或資源時暫時停止執行的狀態。在計算機系統中,由于各種原因,進程或線程可能會進入阻塞態,等待著能夠繼續執行的條件成熟。 在絕大多數情況下,阻塞態到運行態并不是直接
    的頭像 發表于 11-17 11:43 ?1795次閱讀

    阻塞狀態和等待狀態的區別

    阻塞狀態和等待狀態是計算機領域中常用的術語,用來描述進程或線程的狀態。盡管這兩個狀態在表面上有些相似,但它們有著本質上的區別。本文將詳盡、詳實、細致地討論阻塞狀態和等待狀態之間的區別,包括定義
    的頭像 發表于 11-17 11:33 ?2959次閱讀

    阻塞的的connect()函數如何編寫

    由于網絡編程涉及很多細節和技巧,一直想寫篇文章來總結下這方面的心得與經驗,希望對來者有一點幫助,那就善莫大焉了。 一、阻塞的的connect()函數如何編寫 我們知道用connect()函數默認
    的頭像 發表于 11-11 16:23 ?1122次閱讀
    <b class='flag-5'>非</b><b class='flag-5'>阻塞</b>的的connect()函數如何編寫

    安全模塊的串口收發,想實現阻塞要怎么操作?

    改成阻塞的收發,需要修改那些地方呢?
    發表于 10-28 06:58

    STM32怎么實現一個阻塞性的串口屏收發?

    STM32怎么實現一個阻塞性的串口屏收發
    發表于 10-24 08:15

    什么是阻塞?怎么設計才能滿足阻塞指標?

    阻塞就是外部有阻塞干擾信號的時候,設備還可以正常運行。一般分為帶內阻塞和帶外阻塞,由于直放站都是做寬帶設備,一般只提帶外阻塞
    的頭像 發表于 10-10 11:22 ?1376次閱讀

    異步阻塞框架是如何實現的

    1、什么是觀察者模式? Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. 觀察者模式(Observer Design Pattern):在對象之間定義一個一對多的依賴,當一個對象狀態改變的時候,所有依賴的對象都會得到通知并自動更新。 說人話:也叫發布訂閱模式,能夠很好的解耦一個對象改變,自動改變另一個對象這種情況。 2、觀察者模式定義 ①、Subject 被觀察者 定義被觀察者必須實現的職責, 它必須能
    的頭像 發表于 10-09 10:29 ?290次閱讀
    <b class='flag-5'>異步</b><b class='flag-5'>非</b><b class='flag-5'>阻塞</b>框架是如何實現的

    網絡IO模型:阻塞阻塞

    阻塞 IO 模型 在Linux ,默認情況下所有的 socket 都是阻塞的,一個典型的讀操作流程如圖所示。 阻塞阻塞的概念描述的是用戶
    的頭像 發表于 10-08 17:16 ?723次閱讀
    網絡IO模型:<b class='flag-5'>阻塞</b>與<b class='flag-5'>非</b><b class='flag-5'>阻塞</b>