1. 程式人生 > >阻塞、非阻塞與同步、非同步IO的區別

阻塞、非阻塞與同步、非同步IO的區別

轉自知乎的某條評論……@愚抄

今天看文章發現評論中有人把IO的幾個概念講的通俗易懂,拿來和大家分享一下:

關鍵詞

  • 阻塞同步IO
  • 阻塞非同步IO
  • 非阻塞同步IO
  • 非阻塞非同步IO

段子如下:

老張愛喝茶,廢話不說,煮開水。
出場人物:老張,水壺兩把(普通水壺,簡稱水壺;會響的水壺,簡稱響水壺)。
1. 老張把水壺放到火上,立等水開。(同步阻塞)老張覺得自己有點傻
2. 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。(同步非阻塞)老張還是覺得自己有點傻,於是變高端了,買了把會響笛的那種水壺。水開之後,能大聲發出嘀~~~~的噪音。
3. 老張把響水壺放到火上,立等水開。(非同步阻塞)老張覺得這樣傻等意義不大
4. 老張把響水壺放到火上,去客廳看電視,水壺響之前不再去看它了,響了再去拿壺。(非同步非阻塞)老張覺得自己聰明瞭。

總結

所謂同步非同步,只是對於水壺而言。普通水壺,同步;響水壺,非同步。雖然都能幹活,但響水壺可以在自己完工之後,提示老張水開了。這是普通水壺所不能及的。同步只能讓呼叫者去輪詢自己(情況2中),造成老張效率的低下。所謂阻塞非阻塞,僅僅對於老張而言。立等的老張,阻塞;看電視的老張,非阻塞。情況1和情況3中老張就是阻塞的,媳婦喊他都不知道。雖然3中響水壺是非同步的,可對於立等的老張沒有太大的意義。所以一般非同步是配合非阻塞使用的,這樣才能發揮非同步的效用。

【總監】十二春秋之,[email protected]
【Master】zelo,[email protected]

;【運營】運維艄公,[email protected]
【產品設計】流浪貓,[email protected];【體驗設計】兜兜,[email protected]
【iOS】淘碼小工,[email protected];iMcG33K,[email protected]
【Android】人猿居士,[email protected];思路的頓悟,[email protected]
【Java】首席工程師MR_W,[email protected]【測試】土鏡問道,[email protected]

【資料】fox009521,[email protected];【安全】保密,你懂的。

相關推薦

Linux系統時間和RTC時間時鐘設定同步ntpd服務/ntpdate

Linux有兩個時間,一個是系統時間,一個是RTC時間(也叫硬體時間)。Linux系統啟動時,會自動獲取硬體時間,設定為系統時間。一、查詢系統時間:查詢系統時間:date查詢/設定硬體時間:       hwclock –r        顯示硬體時鐘與日期       hw

同步非同步阻塞阻塞

UNIX下可用的I/O模型: 阻塞式I/O; 非阻塞式I/O; I/O複用(select,poll,epoll…); 訊號驅動式I/O(SIGIO); 非同步I/O(POSIX的aio_系列函式); 阻塞式I/O模型:預設情況下,所有套接字都是阻

同步IO非同步IO阻塞IO阻塞IO之間的聯絡區別

POSIX 同步IO、非同步IO、阻塞IO、非阻塞IO,這幾個詞常見於各種各樣的與網路相關的文章之中,往往不同上下文中它們的意思是不一樣的,以致於我在很長一段時間對此感到困惑,所以想寫一篇文章整理一下。 POSIX(可移植作業系統介面)把同步IO操作定義為導致程序阻塞直到

同步非同步阻塞阻塞的辨別理解

所謂同步非同步,只是對於水壺而言,即應用程式。 雖然都能幹活,但響水壺可以在自己完工之後,提示老張水開了。這是普通水壺所不能及的。 同步只能讓呼叫者去輪詢,造成老張效率的低下。 所謂阻塞非阻塞,僅僅對於老張而言。 立等的老張,阻塞;看電視的老張,非阻塞。 情況1和情況3中老張就是阻塞的。雖然3中響水

阻塞阻塞同步非同步IO區別

轉自知乎的某條評論……@愚抄 今天看文章發現評論中有人把IO的幾個概念講的通俗易懂,拿來和大家分享一下: 關鍵詞 阻塞同步IO 阻塞非同步IO 非阻塞同步IO 非阻塞非同步IO 段子如下: 老張愛喝茶,廢話不說,煮開水。 出場人物:老張,水壺

關於同步非同步阻塞阻塞的理解

1、前言   前一段時間出去面試,被問到同步、非同步與阻塞、非阻塞的區別。我一時半會沒有想出來,作為一個工作三年的人來說,實在很慚愧。我當時理解同步、非同步屬於兩個程序中間的協作關係,例如使用瀏覽器訪問一個網站,需要多次請求服務端,才能載入完整個頁面的內容。同步的操作如

同步異步阻塞阻塞

架構 客戶端 多路復用 錯誤 同步非阻塞 函數 鏈接 調用 同步阻塞 同步阻塞,用戶空間的應用程序執行一個系統調用,這意味著應用程序會一直阻塞,直到系統調用完成為止(數據傳輸完成或者發生錯誤)。 同步非阻塞,設備以非阻塞形式打開,這意味著 io 操作不會立刻完成,需要應用程

同步非同步阻塞阻塞並行併發共享資源的同步

同步阻塞呼叫:得不到結果不返回,執行緒進入阻塞態等待。 同步非阻塞呼叫:得不到結果不返回,執行緒不阻塞一直在CPU執行。 非同步阻塞呼叫:去到別的執行緒,讓別的執行緒阻塞起來等待結果,自己不阻塞。 非同步非阻塞呼叫:去到別的執行緒,別的執行緒一直在執行,直到得出結果。  

阻塞阻塞同步非同步

阻塞和非阻塞 阻塞呼叫是指呼叫結果返回之前,呼叫者會進入阻塞狀態等待。只有在得到結果之後才會返回。 非阻塞呼叫是指在不能立刻得到結果之前,該函式不會阻塞當前執行緒,而會立刻返回。   2.同步與非同步 同步和非同步關注的是訊息通訊機制 (synchronous c

對.NET同步非同步阻塞阻塞的理解。

老張愛喝茶,廢話不說,煮開水。 出場人物:老張,水壺兩把(普通水壺,簡稱水壺;會響的水壺,簡稱響水壺)。 1 老張把水壺放到火上,立等水開。(同步阻塞) 老張覺得自己有點傻 2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。(同步非阻塞) 老張還是覺得自己有點傻,於是

那些年讓人迷惑的同步非同步阻塞阻塞

在IT圈混飯吃,不管你用什麼程式語言、從事前端還是後端,阻塞、非阻塞、非同步、同步這些概念,都需要清晰地掌握,否則,怎麼與面試官談笑風生(chui niu pi)?但是,掌握這些概念又不是非常容易,尤其對非科班出身的,更加困難。本文試圖給出一個清晰簡明但不失深刻的介紹,希望對大家有所

IO模型淺析-阻塞阻塞IO複用訊號驅動非同步同步IO

segmentfault 對應博文頁面 https://segmentfault.com/a/1190000016359495 最近看到OVS使用者態的程式碼,在接收核心態資訊的時候,使用了Epoll多路複用機制,對其十分不解,於是從網上找了一些資料,學習了一下《UNIX網路變成卷1:套接字聯網API》這本書

阻塞IO阻塞IO同步IO非同步IO

  再說一下IO發生時涉及的物件和步驟。對於一個network IO (這裡我們以read舉例),它會涉及到兩個系統物件,一個是呼叫這個IO的process (or thread),另一個就是系統核心(kernel)。當一個read操作發生時,該操作會經歷兩個階段: #1)

【高併發程式設計】再談同步非同步阻塞阻塞

同步、非同步、阻塞、非阻塞的概念一直是計算機學科中很重要的概念,而這種細微的差別常常被大家混淆,我自己在過一段時間後也需要複習。今天再次翻出這個概念,仍然覺得不夠清晰,今天再次深入瞭解了這四大天王。 以前轉過一篇部落格:http://blog.csdn.net/xxxxxx9

python-同步非同步阻塞阻塞序列和並行並行和併發密集型執行緒和程序的相關概念

1. 同步和非同步   關注的是訊息的通訊機制,描述的是一種行為方式,是多個任務之間的關係。 ① 同步: 呼叫者主動等待被呼叫方返回結果,在沒有返回結果之前,就一直專職等待。 千萬不要把計算機中“同步”理解成“同時執行”。 ② 非同步:呼叫者傳送請求請求,不會專職等待

併發程式設計並行多執行緒同步非同步多執行緒單執行緒阻塞io阻塞io

一、 cpu的每一個核在同一時間下,只能執行一個執行緒,就是單核同一時間只能執行一個執行緒 而cpu可以不停的切換,這樣就導致使用者感覺可以執行多個執行緒,這是併發,而不是並行 併發和並行 你吃飯吃到一半,電話來了,你一直到吃完了以後才去接,這就說明你不支援併發也不支

同步非同步阻塞阻塞

使用者空間和核心空間 使用者空間:使用者空間是常規程序所在的區域,是非特權的空間,在該空間執行的程式碼不能訪問硬體裝置 核心空間:是作業系統所在的區域,是特權空間,能與裝置控制器通訊,控制著使用者區域程序的執行狀態,最重要的是所有的I/O都直接或間接的通過核心

同步非同步(@Async);阻塞阻塞

1.同步、非同步   同步方法呼叫一旦開始,呼叫者必須等到方法呼叫返回後,才能繼續後續的行為。   非同步方法呼叫更像一個訊息傳遞,一旦開始,方法呼叫就會立即返回,呼叫者就可以繼續後續的操作。而,非同步方法通常會在另外一個執行緒中,“真實”地執行著。整個過程

【java】同步非同步阻塞阻塞

理解同步與非同步 同步是指:傳送方發出資料後,等接收方發回響應以後才發下一個數據包的通訊方式。  非同步是指:傳送方發出資料後,不等接收方發回響應,接著傳送下個數據包的通訊方式。  舉個例子:普通B/S模式(同步)    AJAX技術(非同步) 同步:提交請求->

【Socket程式設計】篇五之IO同步非同步阻塞阻塞

參考Richard Stevens的“UNIX® Network Programming Volume 1, Third Edition: The Sockets Networking ”,6.2