同步、非同步、阻塞、非阻塞的簡單理解

我是壞男孩發表於2017-12-19

一、同步與非同步

先來個概念性的東西:

 同步.非同步
所謂同步,就是在發出一個功能呼叫時,在沒有得到結果之前,該呼叫就不返回,而非同步則直接返回

例子:

同步:老媽叫小明去燒一壺開水,小明就在旁邊等開水開為止。

非同步:小明把那壺水放下去燒,然後沒有等待,等燒水響了再過來

同步非同步的區別就是:是否等待返回的結果,同步等待,非同步則不等待

 

二、阻塞與非阻塞

概念:

 阻塞呼叫是指呼叫結果返回之前,當前執行緒會被掛起(執行緒進入非可執行狀態,在這個狀態下,cpu不會給執行緒分配時間片,即執行緒暫停執行)。函式只有在得到結果之後才會返回。

非阻塞和阻塞的概念相對應,指在不能立刻得到結果之前,該函式不會阻塞當前執行緒,而會立刻返回。

例子:

阻塞:老媽叫小明去燒一壺開水,小明就在旁邊等開水開為止。(同步:一直關注水壺等待著     阻塞:不能做其他事情);

非阻塞:小明去燒一壺開水,是否燒開,就去房間打王者榮耀了,(非阻塞:可以幹其他事情);水燒開了再出來關了(非同步:因為不需要自己去等待)

阻塞與非阻塞的區別就是:能否做其他事情,阻塞時候,執行緒被掛起,不能做其他事情,而非阻塞可以

可以參考:https://www.cnblogs.com/Anker/p/5965654.html

深入理解可以參考:http://blog.csdn.net/historyasamirror/article/details/5778378

 

相關文章