标签:
设想一个场景,有100万用户同时与一个进程保持着TCP链接,而每一时刻只有几十个或几百个TCP链接是活跃的(接收到TCP包)也就是说,在每一时刻进程只需要处理这100万链接中的一小部分链接,那么,如何才能高效的处理这种场景那,进程是否在每次询问操作系统收集有事件发生的TCP连接时,把这100万个链接告诉操作系统,然后由操作系统找出其中有事件发生的几百个链接呢?,实际上在linux2.4版本以前,那时的select或者poll事件驱动方式就是这样做的(就是每次通过轮询的方式从100万个链接中找出活跃链接)
这里有个明显的问题,即在某一时刻,进程收集有事件的连接时,其实这100万链接中的大部分都是没有事件发生的,因此,如果每次收集事件时,都把这100万链接的套接字传给操作系统,而由操作系统内核寻找这些链接上有没有未处理的事件,将会是巨大的资源浪费,而select和poll就是这样做的
标签:
原文地址:http://www.cnblogs.com/phpfans/p/4316486.html