1、 記憶體分為內核緩沖區和用戶緩沖區(網路下載的資源,硬碟加載的資源,先放到內核緩沖區----》copy到應用程式的緩沖區,應用程式才能用這個資料)
2、io模型:
-阻塞io(BIO)
~用戶行程從發起請求,到最終拿到資料前,一直掛起等待; 資料會由用戶行程完成拷貝
-非阻塞io(NIO)
~用戶行程發起請求,如果資料沒有準備好,那么立刻告知用戶行程未準備好;此時用戶行程可選擇繼續發起請求、或者先去做其他事情,稍后再回來繼續發請求,直到被告知資料準備完畢,可以開始接收為止; 資料會由用戶行程完成拷貝
-io多路復用(io多路復用是阻塞式IO,有阻塞的程序就是阻塞式IO) [目前最流行的模型,你所聽到的所謂的高并發的模型框架都是用這個模型,比如 ngixn redis ]
select(windows支持,windows不支持epoll,這也就是官方不提供redis的window版本的原因,windows也扛不住)select支持的檔案描述符數量太小了,默認是1024,這個是大小限制,一直在輪詢--主動問資料,主動取資料
poll(windows支持,linux支持)沒有大小限制,但還是在輪詢---還是要自己要去主動取一下資料去下
epoll(windows不支持,linux支持)沒有大小限制,有回呼機制---當有資料時自動爆發出來,資料直接送過來
~復用也就是共用的意思
~類似BIO,只不過找了一個代理,來掛起等待,并能同時監聽多個請求; 資料會由用戶行程完成拷貝
~java里的NIO(New IO)跟我們所說的NIO(非阻塞IO)不是一個東西
-異步io:
-信號驅動io(理論,不在考慮范圍內)








---40---
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/20994.html
標籤:Python
上一篇:并發編程(執行緒)——定時器,協程,greenlet模塊,gevent模塊,單執行緒的套接字并發,asyncio模塊
