带有 NULL 超时的 select() 比带有超时的 select() 轻吗?

问题描述 投票:0回答:2

我想知道该代码是否:

select(fd,..., NULL);

比那个消耗更少的CPU:

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

以及为什么。谢谢你。

编辑:我问的是一个电话。这是一个系统调用,因此它依赖于系统,并且由系统来解锁 select()ing 程序。那么,对于系统来说,在有或没有超时的情况下完成选择是否会消耗更多的CPU?

c posix-select
2个回答
0
投票

两者都不是“更轻”。

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


0
投票

显然:

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

比:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.