關於同步 非同步,阻塞 非阻塞

2021-09-28 22:08:56 字數 596 閱讀 6376

同步與非同步:

同步是指兩個或者多少個流程(行為)之間存在依賴關係,比如流程a必須等待流程b結束之後才能結束。反之非同步就是沒有依賴關係。

阻塞與非阻塞:

阻塞是指流程a在等待其他流程的結果期間,不能做其他事情,被掛起。反之,非阻塞就是可以做其他事情。

看了網上很多說法,都有 同步阻塞,同步非阻塞,非同步阻塞,非同步非阻塞這些區分,就是因為這麼個區分,讓很多人理不清之間的關係。其實這麼劃分是不對的。

同步阻塞和同步非阻塞,很好理解,流程a在等待流程b完成,過程中能完成中是否可以做別的事。

但是,將非同步也分了阻塞和非阻塞,就不對了。其實從概念上講,根本沒有「非同步阻塞」這個說法。非同步必然是非阻塞的。網上有說法是,等待通知,不能幹其他事,稱為非同步阻塞,由於等待通知而阻塞,說明流程之間已經有了依賴關係,這已經不能稱之為非同步了,這是同步。並不是說交給其他執行緒去幹就叫非同步。

還看到一種說法:說同步非同步是強調的訊息通訊方式,等待返回的叫同步,立刻返回的叫非同步,那麼請問,在這種概念下,怎麼會有同步非阻塞這一說?還有各種文章說著說著就換了概念主體的,自相矛盾的就不提了。

同步非同步,阻塞非阻塞,概念主體是不同的。請勿混淆。

ps. 除了aio,其他的都是同步io。

關於阻塞 非阻塞 非同步 同步

阻塞 比如 recv 這個函式就是阻塞函式,只有讀到資料了才會返回 還有accept 這個函式也是阻塞函式,只有客戶端連線上來了才會返回,不然整個程式都停留在accept出現的地方阻塞著,一直等著有客戶端連線上來accept返回後才繼續執行下去。非阻塞就是和上面相反的意思。同步也就是和阻塞差不多的意...

關於同步,非同步,阻塞,非阻塞

同步與非同步 同步 發出乙個呼叫,若沒有得到結果,則呼叫不返回 若呼叫返回,那麼一定得到結果了 非同步 發出乙個呼叫,立即返回,沒有返回結果。當被呼叫者有結果了,再通過狀態 通知來告訴呼叫者來獲取結果 核心在訊息通訊機制。乙個典型的例子,非同步io 將呼叫者視作主線程,通常情況下,主線程中會實現乙個...

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

之前一直對這個概念理不太清楚,今天看到一篇文章感覺不錯 本文 老張愛喝茶,廢話不說,煮開水。出場人物 老張,水壺兩把 普通 水壺,簡稱水壺 會響的水壺,簡稱響水壺 1 老張把水壺放到火上,立等水開。同步阻塞 老張覺得自己有點傻 2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。同步非阻...