Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 选择/轮询与异步I/O的性能_Performance_Select_Asynchronous_Io - Fatal编程技术网

Performance 选择/轮询与异步I/O的性能

Performance 选择/轮询与异步I/O的性能,performance,select,asynchronous,io,Performance,Select,Asynchronous,Io,从性能的角度来看,哪一个更好?选择/轮询还是异步I/O?我之前的印象是select/poll反复向内核请求数据,而异步I/O依赖于内核的数据可用性通知。然而,我注意到select/poll也依赖于内核通知。因此,我认为从性能的角度来看,两者是相同的。唯一的区别是select/poll块,而异步I/O块则不是。我是正确的还是遗漏了什么?使用异步I/O,您必须连续循环并检查是否有新数据需要定期读取。这使得它需要大量的CPU。Select/poll仅阻塞,不占用CPU电源。它不会在内部循环。selec

从性能的角度来看,哪一个更好?选择/轮询还是异步I/O?我之前的印象是select/poll反复向内核请求数据,而异步I/O依赖于内核的数据可用性通知。然而,我注意到select/poll也依赖于内核通知。因此,我认为从性能的角度来看,两者是相同的。唯一的区别是select/poll块,而异步I/O块则不是。我是正确的还是遗漏了什么?

使用异步I/O,您必须连续循环并检查是否有新数据需要定期读取。这使得它需要大量的CPU。Select/poll仅阻塞,不占用CPU电源。它不会在内部循环。

select/poll还依赖于准备就绪的FileDeskriptor的内核通知。但是select/poll的缺点是,它们一被调用就被阻塞,因为Systemcall处理程序在内核空间中运行

真正的异步I/O是通过LibAIO(Linux上)和IOCP(Windows上)实现的。据我所知,它们不会在der用户空间中阻塞调用进程/线程,它们允许真正的重叠i/O

这意味着异步非阻塞I/O(LibAIO&IOCP)更快,因为它不阻塞调用线程,并且允许真正的重叠I/O。Select/poll也是异步的,但它们是异步阻塞。顺便说一句,select和poll还面临其他一些特殊问题,因此无法很好地扩展

希望我能帮助你。(我也是这方面的新手:))