1. 程式人生 > >12.Linux 高效能伺服器程式設計 --- 高效能 IO 框架庫 Libevent

12.Linux 高效能伺服器程式設計 --- 高效能 IO 框架庫 Libevent

1.控制代碼
	IO框架庫要處理的物件,即 IO事件,訊號和定時事件,統一稱為事件源。
	一個事件源通常和一個控制代碼綁在一起。控制代碼的作用是,當核心檢測到就緒事件時,它將通過
	控制代碼來通知應用程式這一事件。Linux 下,IO事件對應的控制代碼就是檔案描述符,訊號事件對應的
	控制代碼就是訊號值。


2.事件多路分發器
	事件的到來是隨機的,非同步的。我們無法預知程式何時收到一個客戶連線請求,亦或者收到一個暫停訊號。
	所以程式需要迴圈的等待並處理事件,這就是事件迴圈。在事件迴圈中,等待事件一般使用IO複用技術來實現。
	IO 框架庫一般將系統支援的各種IO複用系統呼叫封裝成統一的介面,稱為事件多路分發器。事件多路分發器的 demultiplex
	方法是等待事件的核心函式,起內部呼叫的是 select, poll, epoll_wait 等函式.


3.事件處理器/具體事件處理器
	事件處理器執行事件對應的業務邏輯。它通常包含一個或者多個 handle_event 回撥函式,這些回撥函式在事件迴圈中被執行。
	IO框架庫提供的事件處理器通常是一個介面,使用者需要繼承它來實現自己的事件處理器,即具體事件處理器。因此,事件處理器中的
	回撥函式一般被宣告為虛擬函式,以支援使用者的擴充套件。

4.Reactor
	Reactor 是 IO 框架庫的核心。它提供的幾個主要方法是:

		handle_events.該方法執行事件迴圈。它重複如下過程:等待事件,然後依次處理所有就緒事件對應的事件處理器。

		register_handler. 該方法呼叫事件多路分發器的 register_event 方法來往事件多路分發器中註冊一個事件。

		remove_handle. 該方法呼叫事件多路分發器的 remove_event 方法來刪除事件多路分發器中的一個事件。

12.1 IO 框架庫概述

12.2 Libevent 原始碼分析