前驅模式(proactor)是一種事件處理的軟體設計模式,其中長時間執行的活動在非同步部分中執行。當非同步部分完成後呼叫相應的處理程式。同步和非同步是針對應用程式和核心的互動而言的。
同步:使用者程序觸發io操作後,等待或者輪詢檢視io操作是否完成。
非同步:使用者程序觸發io操作後,繼續自己的工作,當io操作完成後,使用者程序會得到通知(執行一些操作)。
這是乙個簡單的前驅模式的模型。
首先,主線程向執行緒池提交若干任務,執行緒池分配執行緒去處理這些任務,當某個任務處理完成後,將結果存入快取區中,並通知該任務的處理程式去處理結果。
boost.asio中運用了前驅模式,封裝了作業系統的select
,poll
,epoll
,kqueue
等機制,實現了非同步i/o模型。
主線程呼叫相應非同步操作函式向核心註冊socket上的事件,並告訴核心資料快取區的位置。當socket上的資料存入資料快取區或者資料快取區的資料被寫入socket後,核心通知應用程式執行相應的操作。
Reactor模式與Proactor模式
libevent初識 它主要就是基於reactor模式的網路庫。它把reactor模式給我們簡化,在不同平台下使用不同介面來實現高效能。可能windows下iocp,linux下epoll 有些類unix系統沒有epoll的使用的是 select 因為主要它把reactor做了簡化。所以我們直接往r...
ACE前攝器Proactor模式
當os 平台支援非同步操作時,一種高效而方便的實現高效能 web 伺服器的方法是使用前攝式事件分派。使用前攝式事件分派模型設計的 web 伺服器通過一或多個執行緒控制來處理非同步操作的完成。這樣,通過整合完成事件多路分離 completion event demultiplexing 和事件處理器分...
ACE前攝器Proactor模式 收藏
ace前攝器proactor模式 收藏 標籤 當 os 平台支援非同步操作時,一種高效而方便的實現高效能 web 伺服器的方法是使用前攝式事件分派。使用前攝式事件分派模型設計的 web 伺服器通過一或多個執行緒控制來處理非同步操作的完成。這樣,通過整合完成事件多路分離 completion even...