我们在解决高性能并发问题时有两个并发模型:Reactor和Proactor。
对于用户(相对系统来说),Reactor意味着系统提供一个通知机制,实际的IO由用户来做。
而Proactor意味着,用户只要为系统提供一段IO的载体,IO有系统帮助用户来做。
换句话说,两者的区别点,在于数据在应用层和传输层之间的交换,是由应用程序来做还是由系统程序来做。
这里我们把Proactor模型的并发IO成为AIO,这也是AIO这个概念比较通用的解释。
支持AIO的系统可以是OS,比如Windows平台有IOCP。也可以是某个技术平台、虚拟机,比如Java AIO。甚至可以由硬件系统来做。
但我的问题只考虑软系统。我的问题是:无论是用户程序还是系统程序,它们总归是跑在硬件系统资源上的,都要消耗计算资源的。那从这个层面看,使用AIO与否似乎并不关乎我们要解决的高并发问题的最终成果。如果AIO的实际意义不体现在结果中,那它体现在哪里?是不是体现在开发过程中?
对于用户(相对系统来说),Reactor意味着系统提供一个通知机制,实际的IO由用户来做。
而Proactor意味着,用户只要为系统提供一段IO的载体,IO有系统帮助用户来做。
换句话说,两者的区别点,在于数据在应用层和传输层之间的交换,是由应用程序来做还是由系统程序来做。
这里我们把Proactor模型的并发IO成为AIO,这也是AIO这个概念比较通用的解释。
支持AIO的系统可以是OS,比如Windows平台有IOCP。也可以是某个技术平台、虚拟机,比如Java AIO。甚至可以由硬件系统来做。
但我的问题只考虑软系统。我的问题是:无论是用户程序还是系统程序,它们总归是跑在硬件系统资源上的,都要消耗计算资源的。那从这个层面看,使用AIO与否似乎并不关乎我们要解决的高并发问题的最终成果。如果AIO的实际意义不体现在结果中,那它体现在哪里?是不是体现在开发过程中?