學習Unix——函數select、poll、epoll

這部分是相當重要的一部分,之前在工作項目中有用到過,特意認真的看過。文章最後會把我項目用到部分的源碼貼出。

再有值得紀念的一下,原創文章數終於趕上轉載文章數了。說明我找到的學習方法是對了,一開始茫然不知所措時,學習是做加法,將看到的好的文章轉載;但到了一定階段,要懂得做減法了,將之前轉載部分系統的分類總結;最後就是舉一反三,將難題,轉化成自己熟悉的問題解決。

加群466572167

文章開頭總是很難的,要講的東西太多,不知道從哪下筆。我就以下面參看這篇文章為基礎開講:

一、相關概念

select、poll、epoll 都是 I/O 多路復用的機制。I/O 多路復用機制,可以監視多個描述符,一旦某個描述符就緒(一般是讀就緒或者寫就緒),能夠通知程序進行相應的讀寫操作。但 select、poll、epoll本質上都是同步 I/O,因為它們都需要在讀寫事件就緒后自己負責進行讀寫,也就是說這個讀寫過程是阻塞的,而非同步 I/O 則無需自己負責進行讀寫,非同步 I/O 的實現會負責吧數據從內核拷貝到用戶空間。

Advertisements

上面這段文字簡單介紹了一下我們要講到的這三個函數。其中有幾個概念需要搞清楚。

(1)I/O 多路復用機制

I/O 多路復用,也稱為 I/O 多路轉接。APUE 上只有這樣一句話。

為了使用這種技術,先構建一張我們感興趣的描述符(通常都不止一個)的列表,然後調用一個函數,直到這些描述符中的一個已準備好進行 I/O 時,該函數才返回。poll、pselect 和 select 這 3 個函數使我們能夠執行 I/O 多路轉接。在從這些函數返回時,進程會被告知哪些描述符已準備好可以進行 I/O。

這是什麼鬼,還是沒有理解多路轉接到底是怎麼回事,然後我各種百度(谷歌雖好但要翻牆)也沒查到合適的解釋。可以加下小編的群466572167,群內有視頻資料下載學習,可以交流.

Advertisements

I/O 多路轉接,英文是 I/O multiplexing,最後在知乎上看到還比較容易理解的解釋。

Advertisements

你可能會喜歡