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

2021-07-28 02:33:03 字數 791 閱讀 1614

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,就被儲存在...