作業系統 同步 非同步 阻塞 非阻塞

2021-09-23 01:57:31 字數 637 閱讀 9033

同步/非同步, 阻塞/非阻塞分別是什麼? 本篇文章想簡單談談.

當請求乙個方法時, 呼叫者需要等待該方法執行完成, 且該方法會返回執行結果, 則對於呼叫者來說就是"同步"的.

當請求乙個方法時, 呼叫者不需要等待該方法執行完成, 該方法被呼叫後會立即返回, 注意該方法返回的不是執行結果, 比如返回none(null), 則對於呼叫者來說便是"非同步"的.

同步/非同步關注的是訊息通訊機制.

當請求乙個方法時, 呼叫者在得到呼叫結果之前, 呼叫者程序會被掛起, 便是"阻塞"的.

當請求乙個方法時, 呼叫者在得到呼叫結果之前, 還能繼續執行其他命令, 便是"非阻塞"的.

阻塞/非阻塞關注的是程式在等待呼叫結果時的狀態.

同步/非同步, 阻塞/非阻塞可能並不是同一概念, 之間可以兩兩組合, 形成"同步阻塞", "同步非阻塞", "非同步非阻塞"三種, 注意是沒有"非同步阻塞"的. 下面以"你打算燒開一壺水"來舉例:

同步阻塞: 你在水壺旁等著水燒開, 之間什麼也不做.

同步非阻塞: 你可以離開水壺去做其他事, 但需要時不時回來看一眼, 直至水燒開.

非同步: 你可以離開水壺去做其他事, 水燒開後, 水壺會通知你.

文中應該還有不當之處, 我會持續修改, 感謝~

阻塞,非阻塞,非同步,同步

之前一直對這個概念理不太清楚,今天看到一篇文章感覺不錯 本文 老張愛喝茶,廢話不說,煮開水。出場人物 老張,水壺兩把 普通 水壺,簡稱水壺 會響的水壺,簡稱響水壺 1 老張把水壺放到火上,立等水開。同步阻塞 老張覺得自己有點傻 2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。同步非阻...

同步 非同步 阻塞 非阻塞

故事 老王燒開水。出場人物 老張,水壺兩把 普通水壺,簡稱水壺 會響的水壺,簡稱響水壺 老王想了想,有好幾種等待方式 1.老王用水壺煮水,並且站在那裡,不管水開沒開,每隔一定時間看看水開了沒。同步阻塞 老王想了想,這種方法不夠聰明。2.老王還是用水壺煮水,不再傻傻的站在那裡看水開,跑去寢室上網,但是...

同步 非同步 阻塞 非阻塞

故事 老王燒開水。出場人物 老張,水壺兩把 普通水壺,簡稱水壺 會響的水壺,簡稱響水壺 老王想了想,有好幾種等待方式 1.老王用水壺煮水,並且站在那裡,不管水開沒開,每隔一定時間看看水開了沒。同步阻塞 老王想了想,這種方法不夠聰明。2.老王還是用水壺煮水,不再傻傻的站在那裡看水開,跑去寢室上網,但是...