併發 並行,阻塞 非阻塞,同步 非同步

2022-06-07 23:21:10 字數 870 閱讀 9646

1.阻塞,非阻塞

乙個執行緒/程序經歷的5個狀態,建立,就緒,執行,阻塞,終止。各個狀態的轉換條件如上圖,其中有個阻塞狀態,就是說當執行緒中呼叫某個函式,需要io請求,或者暫時得不到競爭資源的,作業系統會把該執行緒阻塞起來,避免浪費cpu資源,等到得到了資源,再變成就緒狀態,等待cpu排程執行。

定義:阻塞呼叫是指呼叫結果返回之前,呼叫者會進入阻塞狀態等待。只有在得到結果之後才會返回。

非阻塞呼叫是指在不能立刻得到結果之前,該函式不會阻塞當前執行緒,而會立刻返回。

2.同步,非同步

定義同步:在發出乙個同步呼叫時,在沒有得到結果之前,該呼叫就不返回。

非同步:在發出乙個非同步呼叫後,呼叫者不會立刻得到結果,該呼叫就返回了。

非同步和非阻塞的定義比較像,兩者的區別是非同步是說呼叫的時候結果不會馬上返回,執行緒可能被阻塞起來,也可能不阻塞,兩者沒關係。非阻塞是說呼叫的時候,執行緒肯定不會進入阻塞狀態。

同步阻塞呼叫:得不到結果不返回,執行緒進入阻塞態等待。

同步非阻塞呼叫:得不到結果不返回,執行緒不阻塞一直在cpu執行。

非同步阻塞呼叫:去到別的執行緒,讓別的執行緒阻塞起來等待結果,自己不阻塞。

非同步非阻塞呼叫:去到別的執行緒,別的執行緒一直在執行,直到得出結果。

3.併發, 並行

併發是指乙個時間段內,有幾個程式都在同乙個cpu上執行,但任意乙個時刻點上只有乙個程式在處理機上執行。

並行是指乙個時間段內,有幾個程式都在幾個cpu上執行,任意乙個時刻點上,有多個程式在同時執行,並且多道程式之間互不干擾。

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

阻塞呼叫是指呼叫結果返回之前,呼叫者會進入阻塞狀態等待。只有在得到結果之後才會返回。非阻塞呼叫是指在不能立刻得到結果之前,該函式不會阻塞當前執行緒,而會立刻返回。同步 在發出乙個同步呼叫時,在沒有得到結果之前,該呼叫就不返回。非同步 在發出乙個非同步呼叫後,呼叫者不會立刻得到結果,該呼叫就返回了。同...

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

同步和非同步關注的是訊息通訊機制 synchronous communication asynchronous communication 所謂同步,就是在發出乙個呼叫時,在沒有得到結果之前,該呼叫就不返回。但是一旦呼叫返回,就得到返回值了。換句話說,就是由呼叫者主動等待這個呼叫的結果。而非同步則是...

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

乙個小故事 故事 小a燒開水。出場人物 小a 出場道具 普通水壺 放在煤氣灶上的那種,為了方便簡稱 水壺 會響的水壺 水燒開了會響的那種,簡稱 響壺 故事目的 小a要拿開水泡咖啡 小a為了實現目的,指定了4個計畫 1 用水壺燒水,並且站在煤氣灶旁邊,啥事不幹,兩眼直勾勾的盯著水壺,等水燒開。燒開後就...