理解阻塞非阻塞與同步異步

###同步與異步 同步和異步關注的消息同步機制。 ####同步 所謂同步,就是發出一個調用時,在沒有獲得結果以前,該調用就不會返回。可是一旦調用返回,就獲得返回值。也就是說,調用者主動等待這個調用結果。 ####異步 所謂異步,就是調用在發出以後,這個調用就直接返回,因此沒有返回結果。也就是說,當一個異步過程調用發出以後,調用者不會馬上獲得結果。而是在調用發出後,被調用者經過狀態、通知來通知調用者,或經過回調函數處理這個調用。linux

例子: 週末去餐廳吃飯,若是遇上飯點,之前的話,咱們就得排隊等待,這個過程當中咱們時不時地問是否是輪到咱們,這是一件無聊並且浪費時間的事情。如今餐廳體諒咱們的痛苦,讓咱們掃碼關注餐廳的微信號公衆號,實時更新當前就餐狀態,這樣咱們就能夠出去購物或者幹本身喜歡的事情,只須要時不時的看一下手機,確認是否是輪到本身就餐。微信

在這個例子中咱們排隊等待主動詢問是否是輪到咱們就餐即是同步,咱們經過微信號公衆號得知咱們就餐即是異步異步

###阻塞與非阻塞 阻塞和非阻塞關注的是程序在等待調用結果(消息,返回值)時的狀態。 ####阻塞 阻塞調用是指調用結果返回以前,當前線程會被掛起。調用線程只有在獲得結果以後纔會返回。 ####非阻塞 非阻塞調用指在不能馬上獲得結果以前,該調用不會阻塞當前線程。函數

接着上面的例子: 你關注了餐廳的微信號公衆號後,你若果依舊在餐廳門口等候,而不去幹別的,這個即是阻塞,若果你去購物或者幹本身喜歡的事,只是時不時的看一下手機,確認是否是輪到本身,這即是非阻塞。線程

阻塞與非阻塞與是否同步異步無關,跟餐廳經過什麼方式回答你結果無關。htm

參考: http://www.linuxidc.com/Linux/2015-07/120338.htmget

相關文章
相關標籤/搜索