理论上proactor比reactor效率要高一些异步I/O能够让I/O操作与计算重叠。充分利用DMA特性。Linux异步IO
glibc aio(aio_*),有bugkernel native aio(io_*),也不完美。目前仅支持 O_DIRECT 方式来对磁盘读写,跳过系统缓存。要自已实现缓存,难度不小。
boost asio实现的proactor,实际上不是真正意义上的异步I/O,底层是用epoll来实现的,模拟异步I/O的。
用一个全局的mutex保护IO每个线程单独写一个日志文件前者造成全部线程抢占一个锁(串行写入)
假设C=8,P=1.0,线程池的任务完全密集计算,只要8个活动线程就能让CPU饱和假设C=8,P=0.5,线程池的任务有一半是计算,一半是IO,那么T=16,也就是16个“50%繁忙的线程”能让8个CPU忙个不停。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。