當前位置:編程學習大全網 - 編程語言 - ios reactor模式什麽意思

ios reactor模式什麽意思

reactor設計模式,是壹種基於事件驅動的設計模式。Reactor框架是ACE各個框架中最基礎的壹個框架,其他框架都或多或少地用到了Reactor框架。

在事件驅動的應用中,將壹個或多個客戶的服務請求分離(demultiplex)和調度(dispatch)給應用程序。在事件驅動的應用中,同步地、有序地處理同時接收的多個服務請求。

《Pattern-Oriented Software Architecture, Volume 2》對這個模式做了詳細的講解。

這個模式的結構圖如下:

圖中的handle對應的是操作系統提供的句柄,例如I/O句柄,Event_Handler類持有這些句柄,reactor類內部提供壹個事件循環:handle_events(),事件循環的代碼實現利用了操作系統提供的多路分離函數,WaitForMultipleObjects或者select等,這些多路分離的函數的特點是,可以同時等待多個句柄,在等待過程中所在線程屬於掛起狀態,不消耗CPU時間,壹旦某個句柄被觸發,則線程被喚醒,函數將返回,線程可以執行後面的代碼,利用多路分離函數的這壹特點,根據被激活的句柄對應的特定事件,調用相關的事件處理函數。可以實現事件循環。

register_handler()函數用於將Event_Handler對象註冊到事件驅動列表中,保證對於某壹類型的事件,會調用Event_Handler類的響應函數handle_event()。

reactor類在做多路分離時需要操縱Event_Handler類的Handle,因此Event_Handler類需要提供get_handle()函數。

另外,當程序不需要再對特定事件響應時,需要把Event_Handler對象從事件驅動列表中刪除,因此reactor類還實現了remove_handler函數。

因為reactor相對穩定,壹旦實現,不需要再定制,所以沒有提供壹個抽象接口類,但Event_Handler是經常需要根據不同的需求定制的,因此需要提供壹個抽象接口類,然後根據實際需求編寫派生類,提供具體句柄,並實現相關虛函數。這個模式的優點是本身不涉及多線程,從而避免了線程的上下文切換。對於響應事件處理時間較短的情況下,可以考慮使用這個模式。如果處理壹個事件需要花費大量時間,就不能使用這個模式,那樣會導致其他事件處理被阻塞。

ACE_Reactor框架是這壹模式的半成品,用戶只要做三件事情就可以實現並使用這壹模式:

1.從ACE_Event_Handler派生壹個或多個類

2.向ACE_Reactor類登記應用的事件處理對象

3.運行ACE_Reactor事件循環。

  • 上一篇:電腦3000元什麽配置最好用
  • 下一篇:48v輕混系統什麽意思?
  • copyright 2024編程學習大全網