高效事件處理模式 Reactor模式

2022-06-05 19:36:08 字數 702 閱讀 6905

同步i/o模型通常用於實現reactor模式非同步i/o模型則用於實現proactor模式

使用同步 i/o 模型(以 epoll_wait 為例)實現的 reactor 模式的工作流程是:

主線程往 epoll 核心事件表中註冊 socket 上的讀就緒事件

主線程呼叫 epoll_wait 等待 socket 上有資料可讀。

當 socket 上有資料可讀時, epoll_wait 通知主線程。主線程則將 socket 可讀事件放入請求佇列。

睡眠在請求佇列上的某個工作執行緒被喚醒,它從 socket 讀取資料,並處理客戶請求,然後往 epoll 核心事件表中註冊該 socket 上的寫就緒事件

主線程呼叫 epoll_wait 等待 socket 可寫。

當 socket 可寫時,epoll_wait 通知主線程。主線程將 socket 可寫事件放入請求佇列。

睡眠在請求佇列上的某個工作程序被喚醒,它往 socket 上寫入伺服器處理客戶請求的結果。

參考:《linux高效能伺服器程式設計》 遊雙

reactor設計模式

reactor設計模式,是一種基於事件驅動的設計模式。pattern oriented software architecture,volume 2 對這個模式做了詳細的講解。這個模式的結構圖如下 圖中的handle對應的是作業系統提供的控制代碼,例如i o控制代碼,event handler類持有...

設計模式 reactor

先看個段子吧,更好理解 reactor這個詞譯成漢語還真沒有什麼合適的,很多地方叫反應器模式,但更多好像就直接叫reactor模式了,其實我覺著叫應答者模式更好理解一些。通過了解,這個模式更像乙個侍衛,一直在等待你的召喚,或者叫召喚獸。併發系統常使用reactor模式,代替常用的多執行緒的處理方式,...

Reactor設計模式

reactor這個詞譯成漢語還真沒有什麼合適的,很多地方叫反應器模式,但更多好像就直接叫reactor模式了,其實我覺著叫應答者模式更好理解一些。通過了解,這個模式更像乙個侍衛,一直在等待你的召喚,或者叫召喚獸。併發系統常使用reactor模式,代替常用的多執行緒的處理方式,節省系統的資源,提高系統...