阻塞和非阻塞,同步非同步

2021-08-21 19:38:00 字數 720 閱讀 8020

參考:

同步:執行乙個操作之後,等待結果,然後才繼續執行後續的操作。

非同步:執行乙個操作後,可以去執行其他的操作,然後等待通知再回來執行剛才沒執行完的操作。

阻塞:程序給cpu傳達乙個任務之後,一直等待cpu處理完成,然後才執行後面的操作。

非阻塞:程序給cpu傳達任我後,繼續處理後續的操作,隔斷時間再來詢問之前的操作是否完成。這樣的過程其實也叫輪詢。

阻塞、非阻塞、多路io復用,都是同步io,非同步必定是非阻塞的,所以不存在非同步阻塞和非同步非阻塞的說法。真正的非同步io需要cpu的深度參與。換句話說,只有使用者執行緒在操作io的時候根本不去考慮io的執行全部都交給cpu去完成,而自己只等待乙個完成訊號的時候,才是真正的非同步io。所以,拉乙個子執行緒去輪詢、去死迴圈,或者使用select、poll、epool,都不是非同步。

煮開水:

1:老張立等開水燒開-》同步,阻塞

2:老張時不時看看開水有沒有開,同步非阻塞

3:換響水壺,水開了會通知老張,非同步非阻塞

非同步都是非阻塞的,所以沒有非同步阻塞,非同步非阻塞的說法。

同步:老張要主動去獲取水有沒有燒開。

非同步:老張不用管水有沒有燒開(io執行),完全交給(cpu處理),水燒開會自動通知老張。

阻塞:針對老張,一直等

非阻塞:針對老張,可以去做別的

同步 非同步 阻塞和非阻塞

同步 非同步 阻塞和非阻塞 在進行windowsapi winsock 網路程式設計時,我們常常見到同步 非同步 阻塞和非阻塞四種呼叫方式。這些方式其實都可以擴充套件為廣義的概念,幫助我們理解多執行緒,多程序,實時作業系統等更廣的概念。同步 synchronic 所謂同步,就是在發出乙個功能呼叫時,...

同步 非同步 阻塞和非阻塞

在進行網路程式設計時,我們常常見到同步 非同步 阻塞和非阻塞四種呼叫方式。這些方式彼此概念並不好理解。所謂同步,就是在發出乙個功能呼叫時,在沒有得到結果之前,該呼叫就不返回。按照這個定義,其實絕大多數函式都是同步呼叫 例如sin,isdigit等 但是一般而言,我們在說同步 非同步的時候,特指那些需...

同步 非同步 阻塞和非阻塞

這幾個概念總是記了又忘。寫下來。同步和非同步是針對應用程式和核心的互動而言的 同步指的是使用者程序觸發io操作並等待或者輪詢的去檢視io操作是否就緒,非同步是指使用者程序觸發io操作以後便開始做自己的事情,而當io操作已經完成的時候會得到io完成的通知。阻塞和非阻塞是針對於程序在訪問資料的時候,根據...