一、概念
1、同步:a呼叫b,b處理直到獲得結果,才返回給a。需要呼叫者一直等待和確認呼叫結果是否返回,然後繼續往下執行。
2、非同步:a呼叫b,無需等待結果,b通過狀態通知a或**函式來處理。呼叫結果返回時,會以訊息或**的方式通知呼叫者。
3、阻塞:a呼叫b,a被掛起直到b返回結果給a,才能繼續執行。呼叫結果返回前,當前執行緒掛起不能夠處理其他任務,一直等待呼叫結果返回。
4、非阻塞:a呼叫b,a不會被掛起,a可以執行其他操作。呼叫結果返回前,當前執行緒不掛起,可以處理其他任務。
二、區別
同步與非同步更關注互動雙方是否可以同時工作。以同步的方式完成任務意味著多個任務的完成次序是序列的,假設任務 a 依賴於任務 b,那麼任務 a 必須等到任務 b 完成之後才能繼續,執行流程為 a->b;
以非同步的方式完成任務意味著多個任務的完成可以是並行的,這種情況多適用於任務之間沒有因果關係,假如任務 a 中需要執行任務 b,而任務 a 的完成不依賴於任務 b 的結果,那麼任務 a 呼叫任務 b 後可以繼續執行後續步驟而不需要等待任務 b 完成,也不關心任務 b 是否執行完畢,此時任務 a 和任務 b 是並行的
同步和非同步是個操作方式,阻塞和非阻塞是執行緒的一種狀態。
同步、非同步指的是被呼叫者結果返回時通知執行緒的一種機制,
阻塞、非阻塞指的是呼叫結果返回程序前的狀態,是掛起還是繼續處理其他任務。
阻塞,非阻塞,非同步,同步
之前一直對這個概念理不太清楚,今天看到一篇文章感覺不錯 本文 老張愛喝茶,廢話不說,煮開水。出場人物 老張,水壺兩把 普通 水壺,簡稱水壺 會響的水壺,簡稱響水壺 1 老張把水壺放到火上,立等水開。同步阻塞 老張覺得自己有點傻 2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。同步非阻...
同步 非同步 阻塞 非阻塞
故事 老王燒開水。出場人物 老張,水壺兩把 普通水壺,簡稱水壺 會響的水壺,簡稱響水壺 老王想了想,有好幾種等待方式 1.老王用水壺煮水,並且站在那裡,不管水開沒開,每隔一定時間看看水開了沒。同步阻塞 老王想了想,這種方法不夠聰明。2.老王還是用水壺煮水,不再傻傻的站在那裡看水開,跑去寢室上網,但是...
同步 非同步 阻塞 非阻塞
故事 老王燒開水。出場人物 老張,水壺兩把 普通水壺,簡稱水壺 會響的水壺,簡稱響水壺 老王想了想,有好幾種等待方式 1.老王用水壺煮水,並且站在那裡,不管水開沒開,每隔一定時間看看水開了沒。同步阻塞 老王想了想,這種方法不夠聰明。2.老王還是用水壺煮水,不再傻傻的站在那裡看水開,跑去寢室上網,但是...