IOCP与EPOLL简介

    目前网络服务器的瓶颈是IO效率, 有效的解决此瓶颈可以在线或并发人数大的问题。其中,IOCP(windows)和EPOLL(Linux)是基于IO编程的API。

IOCP

    全称I/O Completion Port,中文译为I/O完成端口。IOCP是一个异步I/O的API,它可以高效地将I/O事件通知给应用程序。与使用select()或是其它异步方法不同的是,一个套接字[socket]与一个完成端口关联了起来,然后就可继续进行正常的Winsock操作了。然而,当一个事件发生的时候,此完成端口就将被操作系统加入一个队列中。然后应用程序可以对核心层进行查询以得到此完成端口。

 

EPOLL

    传统的select及poll的效率会因为在线人数的线形递增而导致呈二次乃至三次方的下降,这些直接导致了网络服务器能支持的人数有了个比较明显的限制。自从Linux提供了/dev/epoll的设备及后来2.6内核中对/dev/epoll设备的访问的封装(System Epoll)之后,这种现象得到了大大的缓解。

    epoll的操作很简单,总共不过4个API:epoll_create, epoll_ctl, epoll_wait和close。
如果对想了解进一步epoll,可以参考关于网络游戏的网络编程等相关的文章。

你可能感兴趣的:(其他技术)