反應堆模式

2022-03-23 05:18:06 字數 1592 閱讀 4493

1、定義

反應堆模式是一種物件行為類的設計模式,對同步事件分揀和派發。它是處理併發i/o比較常見的一種模式,用於同步i/o。

其中心思想是將所有要處理的i/o事件註冊到乙個中心i/o多路復用器上,同時主線程阻塞在多路復用器上;一旦有i/o事件到來或者是準備就緒,多路復用器返回並將相應的i/o事件分發到對應的處理器中。

2、reactor事件處理機制

reactor是一種事件驅動機制,和普通函式的不同之處在於:應用程式不是主動的呼叫某個api完成處理,reactor逆置了事件處理流程,應用程式需要提供相應的介面並註冊到reactor上,如果相應的時間發生,reactor將主動呼叫應用程式註冊的介面(這些介面又被稱為"**函式")。下面是事件驅動機制的模型圖:

事件驅動(**)就是應用業務向乙個中間人註冊乙個**(event handler),當i/o就緒後,就向這個中間人產生乙個事件,並通知此handler進行處理。這個中間人是由乙個不斷等待和迴圈的單獨執行緒來承擔,它接受所有的handler的註冊,並負責向作業系統查詢io是否就緒在就緒後就呼叫指定的handler進行處理。這個中間人的名字就就叫做reactor。

3、優點

reactor模式是編寫高效能網路伺服器的必備技術,主要有以下優點:

1、handler事件源

handler代表作業系統管理的資源,包括:網路連線、開啟的檔案、同步物件等等。事件可以來自外部,如客戶端的連線請求、資料等,也可以來自內部,如定時器事件。

2、synchronous event demultiplexer同步事件分離器(事件多路分發機制)

由作業系統提供的i/o多路復用機制,例如select和epoll,程式首先將其關心的控制代碼(即事件源)及其事件註冊到event demultiplexer上,當有事件到達時,event demultiplexer會發出通知「在已經註冊的控制代碼集中,乙個或者多個控制代碼的事件已經就緒」;程式收到通知後,就可以在非阻塞的情況下對事件進行處理了。

3、event handler事件處理介面

乙個或多個模板函式組成的介面,描述了和應用程式相關的對某個事件的操作

4、concrete event handler具體的事件處理器

事件處理介面的實現,實現了應用程式提供的某個服務

5、reactor反應器

定義了一些介面,用於應用程式控制事件排程,以及應用程式註冊、刪除事件處理器和相關的描述符,是事件處理器的排程核心。reactor管理器使用同步事件分離器來等待事件的發生。一旦事件發生,reactor管理器先是分離每個事件,然後排程事件處理器,最後呼叫相關的模 板函式來處理這個事件。

nio中reactor的核心是selector。下面是乙個簡單的示例:

public

class reactor implements

runnable

public

void

run()

} catch

(ioexception ex)

}void

dispatch(selectionkey k)

}

1、

2、

反應堆問題

維克多博士創造了乙個裂變反應堆,可取用處於液體狀態的放射性物質。反應堆的容量是v加侖。他有n瓶的放射性液體,每個都有一定的質量和一定的體積。當液體倒入反應堆時,也產生一些單位的能量。現在,維克多想要將能量輸出最大化。但是,有乙個限制條件。他研究了原子元素的物理知識和歷史,認識到反應堆內放射性液體的總...

reactor 反應堆模型

1.reactor模型,本質上講管理網路io 使用下面這個結構用來管理我們的io struct ntyreactor 下面這段 比較核心 我們關心的事件與發生的事件發生時,才去呼叫 2.實現 include include include include include include includ...

epoll反應堆模型

參考 參考 求職期間,還是得好好學習。看了大概的思路,自己理解著敲一下。和原來 的有些地方不同。include include include include include include include include include define max events 1024 監聽上限 de...