Reactor 模式
參考:https://segmentfault.com/a/1190000002715832
Reactor 模式包含幾個主要的模塊:
- Reactor:反應器,定義一個接口,實現以下功能:
- 供應用程序註冊和刪除關注的事件句柄。
- 運行事件循環
- 有就緒事件到來時,分發事件到之前註冊的回調函數上處理
- Handle (文件描述符)
- Synchronous Event Demultiplexer(多路複用,如 epoll,poll,select)
- Event Handler(暴露出來供程序使用的事件處理接口,可以在這些接口中實現具體的處理函數)
- Concrete Event Handler(實現 4 中的接口,實現應用程序所提供的特定事件處理邏輯)
反應器的工作過程:
具體時間處理程序不調用反應器,而是由反應器分配一個具體事件來處理程序,具體事件處理程序對某個指定的事件發生做出反應,而做出這個反應動作,是應用程序之前註冊到 Reactor 上的 Concrete Event Handler。
Reactor 被動的等待指示事件的到來並做出反應,它有一個等待的過程,做什麼都要先放入到監聽事件集合中等待 handler 可用時再進行操作。