一、同步與非同步
先來個概念性的東西:
同步.非同步
所謂同步,就是在發出一個功能呼叫時,在沒有得到結果之前,該呼叫就不返回,而非同步則直接返回
例子:
同步:老媽叫小明去燒一壺開水,小明就在旁邊等開水開為止。
非同步:小明把那壺水放下去燒,然後沒有等待,等燒水響了再過來
同步非同步的區別就是:是否等待返回的結果,同步等待,非同步則不等待
二、阻塞與非阻塞
概念:
阻塞呼叫是指呼叫結果返回之前,當前執行緒會被掛起(執行緒進入非可執行狀態,在這個狀態下,cpu不會給執行緒分配時間片,即執行緒暫停執行)。函式只有在得到結果之後才會返回。
非阻塞和阻塞的概念相對應,指在不能立刻得到結果之前,該函式不會阻塞當前執行緒,而會立刻返回。
例子:
阻塞:老媽叫小明去燒一壺開水,小明就在旁邊等開水開為止。(同步:一直關注水壺等待著 阻塞:不能做其他事情);
非阻塞:小明去燒一壺開水,是否燒開,就去房間打王者榮耀了,(非阻塞:可以幹其他事情);水燒開了再出來關了(非同步:因為不需要自己去等待)
阻塞與非阻塞的區別就是:能否做其他事情,阻塞時候,執行緒被掛起,不能做其他事情,而非阻塞可以
可以參考:https://www.cnblogs.com/Anker/p/5965654.html
深入理解可以參考:http://blog.csdn.net/historyasamirror/article/details/5778378