reactor 模式的基本設計思想是基於i/o復用模型來實現的。
這裡說下i/o復用模型。和傳統io多執行緒阻塞不同,i/o復用模型中多個連線共用乙個阻塞物件,應用程式只需要在乙個阻塞物件等待。當某個連線有新的資料可以處理時,作業系統通知應用程式,執行緒從阻塞狀態返回,開始進行業務處理。
什麼意思呢?餐廳老闆也發現了顧客點餐慢的問題,於是他採用了一種大膽的方式,只留了乙個服務員。當客人點餐的時候,這個服務員就去招待別的客人,客人點好餐後直接喊服務員來進行服務。這裡的顧客和服務員可以分別看作多個連線和乙個執行緒。服務員阻塞在乙個顧客那裡,當有別的顧客點好餐後,她就立刻去服務其他的顧客。
了解了 reactor 的設計思想後,我們再來看下今天的主角單 reactor 單執行緒的實現方案:
reactor 通過 i/o復用程式監控客戶端請求事件,收到事件後通過任務分派器進行分發。
針對建立連線請求事件,通過 acceptor 處理,並建立對應的 handler 負責後續業務處理。
針對非連線事件,reactor 會呼叫對應的 handler 完成 read->業務處理->write 處理流程,並將結果返回給客戶端。
整個過程都在乙個執行緒裡完成。
reactor設計模式
reactor設計模式,是一種基於事件驅動的設計模式。pattern oriented software architecture,volume 2 對這個模式做了詳細的講解。這個模式的結構圖如下 圖中的handle對應的是作業系統提供的控制代碼,例如i o控制代碼,event handler類持有...
設計模式 reactor
先看個段子吧,更好理解 reactor這個詞譯成漢語還真沒有什麼合適的,很多地方叫反應器模式,但更多好像就直接叫reactor模式了,其實我覺著叫應答者模式更好理解一些。通過了解,這個模式更像乙個侍衛,一直在等待你的召喚,或者叫召喚獸。併發系統常使用reactor模式,代替常用的多執行緒的處理方式,...
Reactor設計模式
reactor這個詞譯成漢語還真沒有什麼合適的,很多地方叫反應器模式,但更多好像就直接叫reactor模式了,其實我覺著叫應答者模式更好理解一些。通過了解,這個模式更像乙個侍衛,一直在等待你的召喚,或者叫召喚獸。併發系統常使用reactor模式,代替常用的多執行緒的處理方式,節省系統的資源,提高系統...