Reactor和Proactor模式

  在阅读多线程编程模型相关资料的时候,看到这两个模式。这2个模式在大量的网络库中均有使用。
这里有一个其它人举的读操作的例子用来说明这个模式的操作过程
在Reactor中实现读:
- 注册读就绪事件和相应的事件处理器
- 事件分离器等待事件
- 事件到来,激活分离器,分离器调用事件对应的处理器。
- 事件处理器完成实际的读操作,处理读到的数据,注册新的事件,然后返还控制权。
Proactor的读过程:
- 处理器发起异步读操作(操作系统必须支持异步IO)。在这种情况下,处理器无视IO就绪事件,它关注的是完成事件。
- 事件分离器等待操作完成事件
- 在分离器等待过程中,操作系统利用并行的内核线程执行实际的读操作,并将结果数据存入用户自定义缓冲区,最后通知事件分离器读操作完成。
- 事件分离器呼唤处理器。
- 事件处理器处理用户自定义缓冲区中的数据,然后启动一个新的异步操作,并将控制权返回事件分离器。
 
  这两个模式的主要区别是:
  Reactor模式是同步的,由事件处理器来处理IO操作,而Proactor模式是异步的,IO操作由操作系统来完成,当IO操作完成后才会除非事件处理器来处理。
  Reactor模式可以通过将IO操作交由事件分离器来处理从而模拟Proactor模式。

你可能感兴趣的:(设计模式,C++)