如何解决是select阻止或非阻止调用?
可以公平地说select()
在传递带有超时值的struct timeval
参数时是非阻塞的吗?并且当该参数为NULL时,它将阻塞。
解决方法
可以公平地说select()在传递带有超时值的struct timeval参数时是非阻塞的吗?
不。在这种情况下,它将一直等待直到所选文件描述符之一准备就绪或达到超时为止。这种“等待”显然受到阻碍。
唯一不发生阻塞的情况是超时为0,即给定tv_sec
中的tv_usec
和timeval
被设置为0。