我想知道那段代码:
select(fd,..., NULL);
比那个消耗更少的CPU:
struct timeval tv;
tv.tv_sec = X;
tv_tv_usec = Y;
select(fd,..., &tv);
为什么。谢谢。
编辑:我问的是一个电话。这是一个系统调用,因此它取决于系统,系统可以取消阻止select()程序。那么,对于系统来说,在有或没有超时的情况下完成选择需要更多的CPU消耗吗?答案 0 :(得分:0)
"更轻"。 select
是一个系统调用,它将指示操作系统在其中一个监视文件描述符上发生事件或(如果提供)发生超时时唤醒您的任务。具有select
超时的NULL
将无限期地选择,直到发生监视的文件描述符事件,该进程以另一种方式中断。
答案 1 :(得分:0)
显然:
while (select(..., NULL) == 0) { /* ... */ }
比以下更轻:
while (select(..., tv) == 0) { /* ... */ }
其中电视的时间很短,否则差异可能太小而无法被注意到。