read、select、poll、epoll 区别
阻塞 io 造成 cpu 等待 io,CPU 的处理能力不能得到充分利用。(多线程提升性能一部分原因是提升了 cpu 的利用率,休眠了可以切换到另一个线程去执行)
轮询:非阻塞 io 需要程序重复调用 io 操作来确认操作是否完成,这种重复调用判断操作是否完成的技术叫做轮询。阻塞 I/O 造成 CPU 等待浪费,非阻塞 io 需要轮询去确认是否完全完成数据获取,它会让 CPU 处理状态判断,是对 CPU 资源的浪费。
轮询技术如何演进的,以减小 I/O 状态判断的 CPU 损耗。
1)read:通过重复调用来检查 I/O 的状态来完成完整数据的读取。在得到最终数据前,CPU 一直耗用在等待上。
评论