摘要
一直為同步非同步,阻塞非阻塞概念所困擾,特定總結了下,原來是這麼個意思
一直為同步非同步,阻塞非阻塞概念所困擾,特定總結了下
1、概念介紹
2、訊息通知
ps:呼叫者獲取依賴服務非同步**結果一般有兩種方式:
一種是主動去輪訓查詢非同步**的結果,
一種呼叫依賴服務時傳入乙個callback方法或者**位址,依賴服務完成之後去呼叫callback通知呼叫者。
一般情況,這兩種方式都要支援才是一種良好的非同步**設計方法。
3、場景比喻
小明去買奶茶,可能會有兩種方式
第一種方式就是同步,就等著奶茶妹做好奶茶,奶茶做好之後,小明拿到奶茶才算完成整個任務
第二種方式就是非同步,奶茶妹給了小明乙個小票,小明就算完成了。至於最後奶茶做好沒有,反正奶茶妹會告訴小明的,那是後面的事情了。
4、總結
同步與非同步著重點在訊息通知的方式,也就是呼叫結果通知的方式。結合場景就是,拿到奶茶的方式。
1、概念介紹
阻塞呼叫和同步呼叫不同的。
對於同步呼叫來說,很多時候當前執行緒可能還是啟用的,只是從邏輯上當前函式沒有返回而已,此時,這個執行緒可能也會處理其他的訊息。
還有一點,在這裡先擴充套件下:
1.如果這個執行緒在等待當前函式返回時,仍在執行其他訊息處理,那這種情況就叫做同步非阻塞;
2.如果這個執行緒在等待當前函式返回時,沒有執行其他訊息處理,而是處於掛起等待狀態,那這種情況就叫做同步阻塞;
所以同步的實現方式會有兩種:同步阻塞、同步非阻塞;同理,非同步也會有兩種實現:非同步阻塞、非同步非阻塞;
對於阻塞呼叫來說,則當前執行緒就會被掛起等待當前函式返回;
2、場景比喻
還是小明去買奶茶,可能會有兩種方式
- 2.2、小明點單交錢,然後奶茶妹給了小明乙個小票,等小明的奶茶做好了,再告訴小明來取;
1、奶茶妹給了小明乙個小票,然後小明還是傻等著; 小明這種拿到票還傻等著的行為,就叫阻塞。而這種行為,又叫做非同步阻塞!這種最傻了。
2、奶茶妹給了小明乙個小票,然後小明翻出手機一直刷朋友圈, 過了一會兒奶茶妹說小明你的奶茶好了,過來拿,小明才放下手機去拿奶茶。 這種方式就叫做非阻塞,又叫著非同步非阻塞! ```
3、總結
阻塞與非阻塞的著重點在於當前執行緒等待訊息返回的行為。換成場景就是,小明等奶茶的行為。
**
同步與非同步 阻塞與非阻塞
設想一下這個情景,你列了個購物清單 a,b,c,d 去商店買東西,你向老闆詢店問有沒有你想要的a i o操作 於是老闆去倉庫檢視,這個時候假如你在前台等待老闆查詢結果回來那麼這種詢問等待的方式為同步,此時你相當於被掛起,是處於阻塞狀態的,而如果你沒有在前台等待老闆的查詢而是接著進店逛看有沒有你想要的...
同步與非同步,阻塞與非阻塞
同步與非同步阻塞與非阻塞 阻塞和非阻塞關注的是程式在等待呼叫結果 訊息,返回值 時的狀態.阻塞呼叫是指呼叫結果返回之前,當前執行緒會被掛起。呼叫執行緒只有在得到結果之後才會返回。非阻塞呼叫指在不能立刻得到結果之前,該呼叫不會阻塞當前執行緒。還是上面的例子,你打 問書店老闆有沒有 分布式系統 這本書,...
非同步與同步 阻塞與非阻塞
同步和非同步關注的是訊息通訊機制 synchronous communication asynchronous communication 所謂同步,就是在發出乙個 呼叫 時,在沒有得到結果之前,該 呼叫 就不返回。但是一旦呼叫返回,就得到返回值了。換句話說,就是由 呼叫者 主動等待這個 呼叫 的結...