IO复用是在阻塞IO基础上,通过某种机制同时对多个文件描述符进行监视的一种方式。
select
服务端接收到来自客户端的消息后,不立即返回,而是等待几秒钟才继续向客户端回复消息。在客户端等待服务器回复的消息时,客户端处于睡眠状态,说明write系统调用是阻塞的。
epoll
epoll_create
函数原型
1 | int epoll_create(int size); |
功能:创建保存epoll文件描述符的空间。这些文件描述符正是监视对象。调用epoll_create函数时创建的文件描述符保存空间称为“epoll例程”。通过参数size传递的值决定epoll例程的大小,但该值只是向操作系统的建议。也就是该值并非用来决定epoll例程的大小,而仅供操作系统参考。epoll_create创建的这块空间归操作系统管理。因此,epoll_create返回文件描述符,此文件描述法主要用于区分epoll例程。
返回值:成功时返回文件描述符,失败时返回-1。