网络编程中的reactor与proactor

首先,他们都解决了等待多个事件发生的问题,对多个事件源进行了多路分解。


效率上面:reactor在缓冲区与内核的拷贝上面比proactor多了好几次,reactor在事件发生的时候是串行执行的,而proactor支持异步操作。


引用别人的一个说法:reactor完成的时候只是告诉你有可读或者可写等消息,proactor已经帮你读到你要的缓冲区里面了。


reactor比proactor好的地方在于它容易调试,小规模的网络程序用reator就够了~


当然,reactor的串行执行也是可以靠多线程来解决的,但是这边多线程又引起了切换的开销。而proactor是在内核里面异步执行,效率会高些。


两个模式对于处理程序的策略无差,都可以用线程池之类的作为后端处理程序的利器。

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