1. 程式人生 > >同步異步以及阻塞和非阻塞的區別

同步異步以及阻塞和非阻塞的區別

結束 線程 同步異步 成功 -s 區別 狀態 得到 概念

一、同步與異步的區別:

同步:一個服務的完成需要依賴其他服務時,只有等待被依賴的服務完成後,才算完成,這是一種可靠的服務序列。要麽成功都成功,失敗都失敗,服務的狀態可以保持一致。

異步:一個服務的完成需要依賴其他服務時,只通知其他依賴服務開始執行,而不需要等待被依賴的服務完成,此時該服務就算完成了。被依賴的服務是否最終完成無法確定,它是一個不可靠的服務序列。

消息通知中的同步和異步:

  • 同步:當一個同步調用發出後,調用者要一直等待返回消息(或者調用結果)通知後,才能進行後續的執行;
  • 異步:當一個異步過程調用發出後,調用者不能立刻得到返回消息(結果)。在調用結束之後,通過消息回調來通知調用者是否調用成功。

二、阻塞與非阻塞的區別

阻塞:阻塞調用是指調用結果返回之前,當前線程會被掛起,一直處於等待消息通知,不能夠執行其他業務,函數只有在得到結果之後才會返回。

非阻塞:非阻塞和阻塞的概念相對應,指在不能立刻得到結果之前,該函數不會阻塞當前線程,而會立刻返回。

常見的IO模型有阻塞、非阻塞、IO多路復用,異步。

同步異步以及阻塞和非阻塞的區別