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系統程式設計 第二版
112
|
第四章
* events[i].data.fd 而不會遭到阻擋。
*/
/*
}
free (events);
我們將在第 9 章探討
malloc()
free()
函式。
邊緣觸發事件與準位觸發事件
如果傳遞給
epoll_ctl()
event
參數的
events
欄位被設定成
EPOLLET
值,則
fd
的事件
檢視器就是
邊緣觸發
edge-triggered
),這是相對於
準位觸發
level-triggered
)而言。
下面是生產者(producer)與消費者(consumer)之間透過一個 Unix pipe(導管)通訊
時所發生的事件:
1. 生產者把 1 KB 的資料寫入一個導管。
2. 消費者對導管叫用
epoll_wait()
,等待導管中的資料,導管因而可供讀取。
使用準位觸發的事件檢視器時,
epoll_wait()
呼叫在步驟 2 將立即返回,這顯示導管已
經可供讀取。使用邊緣觸發的事件檢視器時,此呼叫將等到步驟 1 發生之後才會返回。
也就是,即使導管在
epoll_wait()
被調用時已經可供讀取,
epoll_wait()
也不會返回,
除非有資料被寫入導管。
準位觸發是預定行為。這也是
poll()
select()
的行為,以及多數開發者所預期的行
為。邊緣觸發的行為需要使用不同的程式設計方法,通常需要運用非阻擋 I/O 並且仔細
檢查
EAGAIN
邊緣觸發
邊緣觸發(edge-triggered)這個術語係借用自電機工程。準位觸發中斷(level-
triggered interrupt)發生在信號線到達所指定的準位(低準位或高準位) ...
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