成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

徹底搞清 同步,異步,阻塞,非阻塞的概念性知識

libin19890520 / 3216人閱讀

摘要:需要先對的概念有一定的認識我們通常使用的打開文件關閉文件讀讀寫寫這叫本地文件而在編程中本質(zhì)其實是網(wǎng)絡同步異步阻塞非阻塞之前反正一直搞不清楚同步和阻塞異步和非阻塞的概念總感覺同步就是阻塞異步就是非阻塞的總是搞得暈乎乎的于是就重新查了些資料進行

IO

需要先對 IO 的概念有一定的認識:

我們通常使用php的fopen打開文件關閉文件讀讀寫寫, 這叫本地文件IO;

而在socket編程中, 本質(zhì)其實是網(wǎng)絡IO;

同步異步阻塞非阻塞

之前反正一直搞不清楚同步和阻塞, 異步和非阻塞的概念, 總感覺同步就是阻塞, 異步就是非阻塞的, 總是搞得暈乎乎的, 于是就重新查了些資料進行了梳理, 如有不對歡迎大家指正;

簡單來說

同步: 同步體現(xiàn)在, 在等待一件事情的處理結果時, 對方是否提供通知服務, 如果對方不提供通知服務, 則為 同步;

異步: 異步體現(xiàn)在, 在等待一件事情的處理結果時, 對方是否提供通知服務, 如果對方提供通知服務, 則為 異步;

對于常見的Ajax請求, 前端在ajax請求后通常還會執(zhí)行一些其他加載操作(非阻塞); 在server端處理完后, 會將數(shù)據(jù)"通知"到前端頁面;

而對于最近正好在看的RabbitMQ消息隊列系統(tǒng), 雖然本質(zhì)上來說也是異步的(它是通過分隔了數(shù)據(jù)的發(fā)送和接收來解耦應用, 數(shù)據(jù)在最終被消費者處理完后也不會通知到生產(chǎn)者, 因為消息系統(tǒng)采用了很多手段如持久化, 重試等來確保消息一定會被執(zhí)行), 但實質(zhì)上, 消息會在發(fā)送成功后會立即得到響應, 所以單就生產(chǎn)者成功生產(chǎn)消息這一步來說, 其實是同步的;

阻塞: 阻塞體現(xiàn)在, 在等待一件事情的處理結果時, 你是否還去干點其他的事情, 如果不去, 則為 阻塞;

非阻塞: 非阻塞體現(xiàn)在, 在等待一件事情的處理結果時, 你是否還去干點其他的事情, 如果去了, 則為 非阻塞;

結合例子來說

此處找了一位朋友寫的例子, 感覺很不錯
同步阻塞: 你去 甜在心饅頭 店買太極饅頭, 阿梅說:"暫時沒, 正在蒸呢, 你自己看著點兒!", 于是你就站在旁邊只等饅頭, 此時的你, 是阻塞的, 也是同步的;

阻塞表現(xiàn)在你除了等饅頭,別的什么都不做了;

同步表現(xiàn)在等饅頭的過程中, 阿梅不提供通知服務, 你不得不自己主動檢查 "饅頭出爐" 的消息;

同步非阻塞: 你去甜在心饅頭店買太極饅頭, 阿梅說:"暫時沒, 正在蒸呢, 你自己看著點兒!", 于是你就站在旁邊發(fā)發(fā)微信, 然后問一句:"好了沒?", 然后玩玩QQ游戲, 然后再問一句:"好了沒?", 此時的你, 是非阻塞的, 不過卻還是同步的;

非阻塞表現(xiàn)在你除了等饅頭, 自己還在干別的事情;

同步表現(xiàn)在等饅頭的過程中, 由于阿梅不提供通知服務, 你不得不自己主動檢查 "饅頭出爐" 的消息;

異步阻塞: 你去甜在心饅頭店買太極饅頭, 阿梅說:"暫時沒, 正在蒸呢, 蒸好了我打電話告訴你!", 但你依然站在旁邊只等饅頭, 此時的你, 是阻塞的, 是異步的;

阻塞表現(xiàn)在你除了等饅頭, 也沒去干點別的什么(比如玩玩手機啥的);

異步表現(xiàn)在等饅頭的過程中, 阿梅提供電話通知"饅頭出爐"的消息, 你只需要等阿梅的電話;

異步非阻塞: 你去甜在心饅頭店買太極饅頭, 阿梅說:"暫時沒, 正在蒸呢, 蒸好了我打電話告訴你!", 于是你就走了, 去買了雙新球鞋, 看了看武館, 總之, 從此不再過問饅頭的事情, 一心只等阿梅電話, 此時的你, 是非阻塞的, 是異步的

非阻塞表現(xiàn)在你除了等饅頭, 自己還去干點別的事情;

異步表現(xiàn)在等饅頭的過程中, 阿梅提供電話通知"饅頭出爐"的消息, 你只需要等阿梅的電話;

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://m.hztianpu.com/yun/30774.html

相關文章

  • Event Loop - JS執(zhí)行機制

    摘要:心塞塞根據(jù)規(guī)范,事件循環(huán)是通過任務隊列的機制來進行協(xié)調(diào)的。等便是任務源,而進入任務隊列的是他們指定的具體執(zhí)行任務回調(diào)函數(shù)。然后當前本輪的結束,主線程可以繼續(xù)取下一個執(zhí)行。 依然是:經(jīng)濟基礎決定上層建筑。 說明 首先,旨在搞清常用的同步異步執(zhí)行機制 其次,暫時不討論node.js的Event Loop執(zhí)行機制,以下關于瀏覽器的Event Loop執(zhí)行機制 最后,借鑒了很多前輩的研究文...

    muddyway 評論0 收藏0
  • 一文讓你徹底理解 Java NIO 核心組件

    摘要:的出現(xiàn)解決了這尷尬的問題,非阻塞模式下,通過,我們的線程只為已就緒的通道工作,不用盲目的重試了。注意要將注冊到,首先需要將設置為非阻塞模式,否則會拋異常。 同步、異步、阻塞、非阻塞首先,這幾個概念非常容易搞混淆,但NIO中又有涉及,所以總結一下[1]。 同步:API調(diào)用返回時調(diào)用者就知道操作的結果如何了(實際讀取/寫入了多少字節(jié))。 異步:相對于同步,API調(diào)用返回時調(diào)用者不知道操作...

    guyan0319 評論0 收藏0
  • Java多線程筆記(零):進程、線程與通用概念

    摘要:父進程調(diào)用創(chuàng)建子進程。因而,一個進程的第一個線程會隨著這個進程的啟動而創(chuàng)建,這個線程被稱為該進程的主線程。另一方面,線程不可能獨立于進程存在。終止線程線程可以通過多種方式來終結同一個進程中的其他線程。 前言 不積跬步,無以至千里;不積小流,無以成江海。在學習Java多線程相關的知識前,我們首先需要去了解一點操作系統(tǒng)的進程、線程以及相關的基礎概念。 進程 通常,我們把一個程序的執(zhí)行稱為一...

    blastz 評論0 收藏0
  • JavaScript:徹底理解同步、異步和事件循環(huán)(Event Loop)

    摘要:例如處理請求的線程處理事件的線程定時器線程讀寫文件的線程例如在中等等。事件循環(huán)事件循環(huán)是指主線程重復從消息隊列中取消息執(zhí)行的過程。事件觸發(fā)時,表示異步任務完成,會將事件監(jiān)聽器函數(shù)封裝成一條消息放到消息隊列中,等待主線程執(zhí)行。 一. 單線程 我們常說JavaScript是單線程的。 所謂單線程,是指在JS引擎中負責解釋和執(zhí)行JavaScript代碼的線程只有一個。不妨叫它主線程。 但是實...

    wenyiweb 評論0 收藏0
  • I/O模型和Java NIO源碼分析

    摘要:最近在學習網(wǎng)絡編程和相關的知識,了解到是模式的網(wǎng)絡框架,但是提供了不同的來支持不同模式的網(wǎng)絡通信處理,包括同步異步阻塞和非阻塞。因為的版本使用的的模式,而則希望使用模式,而且版本沒有將的部分配置項暴露出來,比如說和。 ??最近在學習Java網(wǎng)絡編程和Netty相關的知識,了解到Netty是NIO模式的網(wǎng)絡框架,但是提供了不同的Channel來支持不同模式的網(wǎng)絡通信處理,包括同步、異步、...

    yuanxin 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<