1. 程式人生 > 實用技巧 >併發程式設計——IO模型(重點)

併發程式設計——IO模型(重點)

1、 記憶體分為核心緩衝區和使用者緩衝區(網路下載的資源,硬碟載入的資源,先放到核心緩衝區----》copy到應用程式的緩衝區,應用程式才能用這個資料)

2、io模型:
-阻塞io(BIO)
    ~使用者程序從發起請求,到最終拿到資料前,一直掛起等待; 資料會由使用者程序完成拷貝
-非阻塞io(NIO)
    ~使用者程序發起請求,如果資料沒有準備好,那麼立刻告知使用者程序未準備好;此時使用者程序可選擇繼續發起請求、或者先去做其他事情,稍後再回來繼續發請求,直到被告知資料準備完畢,可以開始接收為止; 資料會由使用者程序完成拷貝
-io多路複用(io多路複用是阻塞式IO,有阻塞的過程就是阻塞式IO)
select(windows支援,windows不支援epoll,這也就是官方不提供redis的window版本的原因,windows也扛不住)select支援的檔案描述符數量太小了,預設是1024--主動問資料,主動取資料
poll(windows支援,linux支援)---還是要自己要去主動取一下資料去下
epoll(windows不支援,linux支援)---當有資料時自動爆發出來,資料直接送過來

    ~複用也就是共用的意思
    ~類似BIO,只不過找了一個代理,來掛起等待,並能同時監聽多個請求; 資料會由使用者程序完成拷貝
-非同步io:
-訊號驅動io(理論,不在考慮範圍內)

---40---