1、使用場景
1)阻塞與非阻塞的使用場景:i/o、多執行緒。
2)同步與非同步的使用場景:通訊,多執行緒。
2、具體理解
在實際網路程式設計的環境中,一般是指執行緒的同步和非同步與io的阻塞與非阻塞,
與系統底層的同步通訊與非同步通訊無關,
多執行緒的阻塞即多執行緒的同步,多執行緒的非阻塞即多執行緒的非同步。
3、網路程式設計io模型理解
unix網路程式設計中,將io模型劃分為5種:(1)阻塞io (2)非阻塞io (3)訊號驅動io (4)io復用 (5)非同步io
按上面邏輯分析:
1)阻塞io實際就是同步執行緒阻塞i/o.
2)非阻塞io實際是同步執行緒非阻塞i/o。
3)訊號驅動io實際是同步執行緒非阻塞i/o。
4)io復用實際是同步執行緒非阻塞i/o。5)非同步io實際是非同步執行緒非阻塞i/o。
4、網路程式設計io模型比較
在處理大量併發的網路收發資料時
1)同步執行緒阻塞i/o,當前執行緒只能等收發操作完成才能繼續執行
2)同步非阻塞i/o,當前執行緒雖然不必等收發操作完成才能繼續執行,但是還要參與具體收發過程中。
3)非同步執行緒非阻塞i/o,在通知收發操作後,執行緒可以處理其他操作,當本次收發接收後程式可以繼續進行處理收發結果。
4)非同步執行緒阻塞i/o,阻塞io影響到了執行緒非同步效果。
5、網路程式設計io模型效率
阻塞io《非阻塞io《訊號驅動io
水之積也不厚,則其負大舟也無力;風之積也不厚,則其負大翼也無力。
理解阻塞非阻塞與同步非同步
同步和非同步關注的是訊息通訊機制 synchronous communication asynchronous communication 所謂同步,就是在發出乙個 呼叫 時,在沒有得到結果之前,該 呼叫 就不返回。但是一旦呼叫返回,就得到返回值了。換句話說,就是由 呼叫者 主動等待這個 呼叫 的結...
同步 非同步與阻塞 非阻塞的理解
在學習到python網路程式設計,socketserver.中,涉及到select的應用,由此了解到socket的setblocking模式,了解了socket有阻塞與非阻塞的區別,同時網上查詢了一下,感覺對非同步 同步的概念有些重疊,為此深入了解一下。在linux網路io中涉及到如下模型 1 阻塞...
徹底理解同步非同步阻塞與非阻塞
前言最近有同事問我同步非同步與阻塞非阻塞有什麼區別,後來發現很多同事不能區分這些概念。本篇文章主要想梳理一下計算機程式設計中的一些概念。使用者空間 使用者空間就是使用者程序可以直接訪問的空間。使用者的程序,就是你寫的程式的執行例項,是生存在使用者空間的。比如說,你在你的程式裡宣告的變數a,就被儲存在...