同步異步?阻塞非阻塞?併發並行?

阻塞非阻塞?

阻塞調用是指調用結果返回之前,調用者會進入阻塞狀態等待。只有在得到結果之後纔會返回。
非阻塞調用是指在不能立刻得到結果之前,該函數不會阻塞當前線程,而會立刻返回。

同步異步?

同步:在發出一個同步調用時,在沒有得到結果之前,該調用就不返回。
異步:在發出一個異步調用後,調用者不會立刻得到結果,該調用就返回了。

同步 阻塞區別

同步的定義看起來跟阻塞很像,但是同步跟阻塞是兩個概念, 同步調用的時候,線程不一定阻塞,調用雖然沒返回,但它還是在運行狀態中的,CPU很可能還在執行這段代碼,而阻塞的話,它就肯定不在CPU中跑這個代碼了。這就是同步和阻塞的區別。同步是肯定可以在,阻塞是肯定不在

四種組合方式

同步阻塞調用:得不到結果不返回,線程進入阻塞態等待。
同步非阻塞調用:得不到結果不返回,線程不阻塞一直在CPU運行。
異步阻塞調用:去到別的線程,讓別的線程阻塞起來等待結果,自己不阻塞。
異步非阻塞調用:去到別的線程,別的線程一直在運行,直到得出結果。

併發並行

併發是指一個時間段內,有幾個程序都在同一個CPU上運行,但任意一個時刻點上只有一個程序在處理機上運行。
並行是指一個時間段內,有幾個程序都在幾個CPU上運行,任意一個時刻點上,有多個程序在同時運行,並且多道程序之間互不干擾。

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