首页 > 解决方案 > select() 是阻塞调用还是非阻塞调用

问题描述

当它传递带有超时值的参数时,可以说它select()是非阻塞的吗?struct timeval当该参数为 NULL 时,它是阻塞的。

标签: linuxsocketsblockingnonblocking

解决方案


公平地说 select() 在传递带有超时值的 struct timeval 参数时是非阻塞的吗?

否。在这种情况下,它一直在等待,直到选定的文件描述符之一准备好或达到超时。这种“等待”显然是阻塞的。

这是非阻塞的唯一情况是如果超时为 0,即给定的tv_sec和设置为 0。tv_usectimeval


推荐阅读