天天看點

同步與異步&阻塞與非阻塞一、同步與異步的差別二、阻塞與非阻塞的差別三、大總結

摘要

一直為同步異步,阻塞非阻塞概念所困擾,特定總結了下,原來是這麼個意思

一直為同步異步,阻塞非阻塞概念所困擾,特定總結了下

同步:所謂同步是一個服務的完成需要依賴其他服務時,隻有等待被依賴的服務完成後,依賴的服務才能算完成,這是一種可靠的服務序列。要麼成功都成功,失敗都失敗,服務的狀态可以保持一緻。

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

同步:當一個同步調用發出後,調用者要一直等待傳回消息(或者調用結果)通知後,才能進行後續的執行;

異步:當一個異步過程調用發出後,調用者不能立刻得到傳回消息(結果)。實際處理這個調用的部件在完成後,通過消息回調來通知調用者是否調用成功。

小明去買奶茶,可能會有兩種方式

小明點單交錢,然後等着取奶茶;

小明點單交錢,然後奶茶妹給了小明一個發票,等小明的奶茶做好了,再告訴小明來取;

同步與異步着重點在消息通知的方式,也就是調用結果通知的方式。結合場景就是,拿到奶茶的方式。

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

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

還是小明去買奶茶,可能會有兩種方式

2.1、小明點單交錢,然後等着取奶茶; ``` 1、小明在等着取奶茶的時候呢,啥都不幹,就等着; 小明等奶茶的行為就叫做阻塞,小明在等奶茶的時候,阻塞了!而這種方式又叫做同步阻塞。

2、小明在等着取奶茶的時候呢,翻出手機,一會翻翻微信朋友圈,一會瞅瞅奶茶妹有沒有做好奶茶; 小明這種行為就叫做非阻塞,因為沒有阻塞在等奶茶這件事情上。而這種方式又叫做同步非阻塞。

1、奶茶妹給了小明一個發票,然後小明還是傻等着; 小明這種拿到票還傻等着的行為,就叫阻塞。而這種行為,又叫做異步阻塞!這種最傻了。

2、奶茶妹給了小明一個發票,然後小明翻出手機一直刷朋友圈, 過了一會兒奶茶妹說小明你的奶茶好了,過來拿,小明才放下手機去拿奶茶。 這種方式就叫做非阻塞,又叫着異步非阻塞! ```

阻塞與非阻塞的着重點在于目前線程等待消息傳回的行為。換成場景就是,小明等奶茶的行為。

1、同步阻塞:小明啥都不幹等奶茶。

2、同步非阻塞:小明一邊玩手機一邊等奶茶。

3、異步阻塞:小明拿着發票啥都不幹等着奶茶妹告訴他奶茶好了

4、異步非阻塞:小明拿着發票玩着手機等着奶茶妹告訴他奶茶好了

轉自http://my.oschina.net/haoran100/blog/707197

QQ:519841366

本頁版權歸作者和部落格園所有,歡迎轉載,但未經作者同意必須保留此段聲明,

且在文章頁面明顯位置給出原文連結,否則保留追究法律責任的權利

繼續閱讀