select函数是阻塞的吗

select函数的阻塞和非阻塞态理解

发布 : IT培训   发布时间:2023-04-26 15:18:22

品牌型号:联想小新Pro14/系统版本:windows10

select函数是否阻塞主要取决于参数timeout超时时间的值,timeout的取值决定了select的状态:

1、timeout传入NULL,则select为阻塞状态,即需要等到监视文件描述符集合中某个文件描述符发生变化才会返回;

2、timeout置为0秒、0微秒,则select为非阻塞状态,不管文件描述符是否有变化,都立刻返回继续执行,文件无变化返回0,有变化返回一个正值。

其它答案
冰阔落 2020-06-22 18:56:36

select函数本身是阻塞的(与socket是否阻塞并没有关系), 直到:

1、有监测时间发生(返回 > 0)

2、超时(返回0)

3、select函数错误 (返回-1)