标签:异步 常见问题 Reactor 模式 webserver 事件 完成 Proactor 服务器
目录
Reactor和Proactor的区别
Reactor和Proactor都是处理并发编程中的I/O多路复用问题的设计模式。它们的主要区别在于处理I/O事件的方式。
Reactor模式:
- Reactor模式是一种同步I/O模式,它等待文件描述符或socket为读写操作准备就绪,然后将就绪事件传递给对应的处理器,由处理器完成实际的读写工作。
- 当I/O事件发生时,Reactor模式会唤醒一个等待线程,让它去处理I/O事件,从而避免阻塞。
- Reactor模式基于“待完成”的I/O事件,也就是说,它关注的是那些尚未完成的I/O操作。
Proactor模式:
- Proactor模式是一种异步I/O模式,它让应用程序主动轮询I/O事件,从而避免阻塞。
- 在Proactor模式中,处理器或兼任处理器的事件分离器只负责发起异步读写操作,I/O操作本身由操作系统完成。这意味着应用程序在发起异步读写请求时,需要传入数据缓冲区的地址等信息,然后系统内核会自动完成数据的读写工作。
- 当I/O操作完成时,操作系统会通知应用程序处理数据。因此,Proactor模式基于“已完成”的I/O事件。
总的来说,Reactor和Proactor模式的主要区别在于处理I/O事件的方式:Reactor模式是基于同步I/O,关注的是尚未完成的I/O操作;而Proactor模式是基于异步I/O,关注的是已经完成的I/O操作。此外,Proactor模式通常比Reactor模式更高效,因为它避免了线程间的协作,但它的实现也相对更复杂。
标签:异步,
常见问题,
Reactor,
模式,
webserver,
事件,
完成,
Proactor,
服务器
From: https://www.cnblogs.com/yubo-guan/p/18044365