我想知道该代码是否:
select(fd,..., NULL);
比那个消耗更少的CPU:
struct timeval tv;
tv.tv_sec = X;
tv_tv_usec = Y;
select(fd,..., &tv);
以及为什么。谢谢你。
编辑:我问的是一个电话。这是一个系统调用,因此它依赖于系统,并且由系统来解锁 select()ing 程序。那么,对于系统来说,在有或没有超时的情况下完成选择是否会消耗更多的CPU?
两者都不是“更轻”。
select
是一个系统调用,当监视的文件描述符之一发生事件或发生超时(如果提供)时,将指示操作系统唤醒您的任务。带有 select
超时的 NULL
将无限期地选择,直到发生监视的文件描述符事件或进程以其他方式中断。
显然:
while (select(..., NULL) == 0) { /* ... */ }
比:
轻 while (select(..., tv) == 0) { /* ... */ }
电视上的时间很短,否则差异可能太小而无法被注意到。