使用NULL超时的select()是否比使用超时的select()更轻?

时间:2014-09-12 13:18:26

标签: c select

我想知道那段代码:

select(fd,..., NULL);

比那个消耗更少的CPU:

struct timeval tv;
tv.tv_sec = X;
tv_tv_usec = Y;
select(fd,..., &tv);

为什么。谢谢。

编辑:我问的是一个电话。这是一个系统调用,因此它取决于系统,系统可以取消阻止select()程序。那么,对于系统来说,在有或没有超时的情况下完成选择需要更多的CPU消耗吗?

2 个答案:

答案 0 :(得分:0)

"更轻"。 select是一个系统调用,它将指示操作系统在其中一个监视文件描述符上发生事件或(如果提供)发生超时时唤醒您的任务。具有select超时的NULL将无限期地选择,直到发生监视的文件描述符事件,该进程以另一种方式中断。

答案 1 :(得分:0)

显然:

 while (select(..., NULL) == 0) { /* ... */ }

比以下更轻:

 while (select(..., tv) == 0) { /* ... */ }

其中电视的时间很短,否则差异可能太小而无法被注意到。