解釋同步\異步、阻塞\非阻塞、並行\併發之間的區別

一、同步:執行一個操作之後,等待結果,然後才繼續執行後續的操作。異步:執行一個操作後,可以去執行其他的操作,然後等待通知再回來執行剛纔沒執行完的操作。

同步和異步關注的是消息通信機制,所謂同步,就是在發出一個調用時,在沒有得到結果之前,該調用就不返回,但是一旦調用返回,就得到返回值了;換句話說,就是由調用者主動等待這個調用的結果。

而異步則相反,調用在發出之後,這個調用就直接返回了,所以沒有返回結果。換句話說,當一個異步過程調用發出後,調用者不會立刻得到結果,而是在調用發出後,被調用者通過狀態、通知來通知調用者,或通過回調函數處理這個調用。

二、阻塞:進程給CPU傳達一個任務之後,一直等待CPU處理完成,然後才執行後面的操作。非阻塞:進程給CPU傳達任務後,繼續處理後續的操作,隔斷時間再來詢問之前的操作是否完成。這樣的過程其實也叫輪詢。

阻塞和非阻塞關注的是程序在等待調用結果(消息,返回值)時的狀態。

阻塞調用是指調用結果返回之前,當前線程會被掛起。調用線程只有在得到結果之後纔會返回。

非阻塞調用指的在不能立刻得到結果之前,該調用不會阻塞當前線程。

三、並行是指運算中的兩件或更多件事情在同一時刻發生。實事求是地說,這種情況只會在系統CPU擁有兩個獨立核心時發生,這樣在任何時刻纔會有不同的電脈衝信號發出。併發意味着至少兩件事務在同一時間段發生。但注意,這裏的事務是(高級的)任務,而不是(低級的)操作。所以,請分清併發和並行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章