reactor vs proactor

时间:2012-08-08 07:04:27

标签: java design-patterns

有人能解释反应堆模式和前驱模式之间的区别吗? 我知道在reactor-pattern中,操作是同步的,并且在proactor中它们是异步的,并且在反应器中操作由处理器完成,处理器由反应器移交给客户端。 (如果我错了,请纠正我)

另外,在故障安全的情况下使用哪种模式,哪种模式用于快速失败?

2 个答案:

答案 0 :(得分:3)

引用Fail fast or fail safe?以及wiki文章我会说proactor是故障安全的,而reactor是快速失​​败的。具有完成处理程序的Proactor为其提供了更“安全”的方法。如果一个任务在阻塞大量资源时失败,则同步环境(如reactor)将会出现大量故障。希望这可以帮助。

答案 1 :(得分:1)

reactor 模式下,您将轮询设备以准备执行某项操作,而在 proactor 中,您将进行某些操作并对其完成进行轮询。

反应器模式的好例子是:epoll(Linux),kqueue(MacOS,FreeBSD),select(Linux,MacOS,Windows)方法。 前摄器模式的一个很好的例子是Windows IOCP方法。