使用select函数也才一年多时间,也许对select的理解还不是很深刻,所以不敢称详解,我只能简单的描述一下自己对select函数功能的理解和调用方式,我想这些对于初次使用select函数的人来说够用了,如有说得不恰当的地方,还请大家批评指正。
首先我们需要解答一些疑惑。为什么要使用select函数?
比如你有一个服务器程序,维护着N多个TCP连接,你如何去判断这些TCP连接上有数据传送过来了呢?最傻瓜的办法就是隔一定时间去循环读一次所有TCP连接对应的文件描述符,如果read返回正值则说明有数据过来。这样做未免也太傻瓜太浪费CPU了一点,无法做到及时的检测到结果,还好,select函数可以帮我们自动检测指定的文件描述符是否有数据可读,即已经建立好的连接那端有新的数据过来或者有新的尚未建立好的连接请求过来。 阅读全文