故事:老王燒開水。
出場人物:老張,水壺兩把(普通水壺,簡稱水壺;會響的水壺,簡稱響水壺)。
老王想了想,有好幾種等待方式
1.老王用水壺煮水,並且站在那裡,不管水開沒開,每隔一定時間看看水開了沒。-同步阻塞
老王想了想,這種方法不夠聰明。
2.老王還是用水壺煮水,不再傻傻的站在那裡看水開,跑去寢室上網,但是還是會每隔一段時間過來看看水開了沒有,水沒有開就走人。-同步非阻塞
老王想了想,現在的方法聰明了些,但是還是不夠好。
3.老王這次使用高大上的響水壺來煮水,站在那裡,但是不會再每隔一段時間去看水開,而是等水開了,水壺會自動的通知他。-非同步阻塞
老王想了想,不會呀,既然水壺可以通知我,那我為什麼還要傻傻的站在那裡等呢,嗯,得換個方法。
4.老王還是使用響水壺煮水,跑到客廳上網去,等著響水壺自己把水煮熟了以後通知他。-非同步非阻塞
老王豁然,這下感覺輕鬆了很多。
其實,這兩者存在本質的區別,它們的修飾物件是不同的。阻塞和非阻塞是指程序訪問的資料如果尚未就緒,程序是否需要等待,簡單說這相當於函式內部的實現區別,也就是未就緒時是直接返回還是等待就緒。
而同步和非同步是指訪問資料的機制,同步一般指主動請求並等待i/o操作完畢的方式,當資料就緒後在讀寫的時候必須阻塞,非同步則指主動請求資料後便可以繼續處理其它任務,隨後等待i/o,操作完畢的通知,這可以使程序在資料讀寫時也不阻塞。
形象理解同步和非同步與阻塞和非阻塞
同步簡述 當發出乙個 呼叫 時,在沒有得到結果之前,該 呼叫 就不返回,呼叫者 需一直等待該 呼叫 結束,才能進行下一步工作。特點 呼叫方主動等待。舉例 假設你給隔壁老王打 要他家wifi密碼,老王說他要找一下。這時你沒有掛 而是一直等待另一頭的老王找了半天,直到等待他把wifi密碼找到告訴你 返回...
同步 非同步 阻塞和非阻塞
同步 非同步 阻塞和非阻塞 在進行windowsapi winsock 網路程式設計時,我們常常見到同步 非同步 阻塞和非阻塞四種呼叫方式。這些方式其實都可以擴充套件為廣義的概念,幫助我們理解多執行緒,多程序,實時作業系統等更廣的概念。同步 synchronic 所謂同步,就是在發出乙個功能呼叫時,...
同步 非同步 阻塞和非阻塞
在進行網路程式設計時,我們常常見到同步 非同步 阻塞和非阻塞四種呼叫方式。這些方式彼此概念並不好理解。所謂同步,就是在發出乙個功能呼叫時,在沒有得到結果之前,該呼叫就不返回。按照這個定義,其實絕大多數函式都是同步呼叫 例如sin,isdigit等 但是一般而言,我們在說同步 非同步的時候,特指那些需...