Skip to Content
LINUX系統程式設計 第二版
book

LINUX系統程式設計 第二版

by Robert Love
December 2013
Intermediate to advanced
496 pages
8h 57m
Chinese
GoTop Information, Inc.
Content preview from LINUX系統程式設計 第二版
56
|
第二章
本章稍早所討論的非阻擋 I/O 可做為此問題的一個解決方案。使用非阻擋 I/O,應用程
式可以發出能夠傳回錯誤訊息的 I/O 要求,不會受到阻擋。然而,此解決方案的效率並
不高,有兩個原因。首先,行程需要不斷以任意順序發出 I/O 要求,一直等到其所開啟
之檔案描述器中已經出現可以進行 I/O 者。這是一個差勁的程式設計。其次,如果程式
可以休眠,效率將可提升不少,因為可以釋出處理器給其他任務使用,當有一或多個檔
案描述器已備妥可進行 I/O,則會喚醒休眠中的任務。
接著讓我們來探討多工式(multiplexedI/O
多工式 I/O 讓一個應用程式得以同時服務多個檔案描述器,以及在其中有任何一個備妥
可進行讀取或寫入時收到通知,而不會受到阻擋。多工式 I/O 因此成為了應用程式的支
點,它的運作方式類似下面這個樣子:
1. 多工式 I/O;當這些檔案描述器中有任何備妥可進行 I/O 者,請通知我。
2. 無任何檔案描述器準備妥當?休眠,直到有一個或多個檔案描述器備妥。
3. 被喚醒!有哪些檔案描述器準備妥當?
4. 處理所有備妥可進行 I/O 的檔案描述器,而不會受到阻擋。
5. 回到步驟 1,從頭開始。
Linux 提供了三種多工式 I/O 解決方案:
select
poll
epoll
等介面。本章將說明前面兩
種介面,最後一種介面(屬於進階的 Linux 解決方案)會在第 4 章加以說明。
select()
select()
系統呼叫提供了一個可用於實作多工式同步 I/O 的機制: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

優雅的SciPy|Python科學研究的美學

優雅的SciPy|Python科學研究的美學

Juan Nunez-Iglesias, Stéfan van der Walt, Harriet Dashnow
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普

Publisher Resources

ISBN: 9789862769812