Reactor与Proactor的两篇paper

《Reactor: An Object Behavioral Pattern for Concurrent Event Demultiplexing and Dispatching》

    这篇Paper给出了Reactor模式的定义: Reactor是一个同步的多路复用分发器,它主要由两个部分构成:一个同步的解多路复用器(Demultiplexer),一个事件分发器(Dispatcher)。事件处理程序在Dispatcher进行注册,提供一致的对外接口,这个接口就是OO的常见多态方式。

系统工作时,

(1) 先把感兴趣的事件源(IO通道句柄)在Demultiplexer注册;

(2) 然后启动Demultiplexer。由于Demultiplexer是同步的,所以进入休眠状态;

(3) 直到某几个事件源(IO通道)发生了我们感兴趣的事件;

(4) Demultiplexer把事件送入Dispatcher;

(5) Dispatcher调用对应的事件处理程序(Event Handler)  

    典型的同步Demultiplexer:select函数  

《Comparing Two High-Performance I/O Design Patterns》

    这篇paper对比了Reactor和Proactor这两个模式 Reactor模式,见前文。

    Proactor模式。该模式也是两个部分:一个异步的解多路复用器(Demultiplexer),一个事件分发器。

    但是在该事件分发器中注册的Event Handler,会以后台方式被调用,主控制程序(main loop)不会感知到它的调用,直到调用完成了,它才发通知给main loop。也就是完全异步的IO。 Proactor一旦被启动,立即返回,主控制程序继续干别的事情,直到事件处理完成,它才得到通知。这是一个典型的AIO,参见《Unix Network Programming》中对IO multiplexing的描述。 Proactor的一个例子:windows的IO完成端口。    

原文地址:https://www.cnblogs.com/ohscar/p/3109602.html