代码如下:
#include
int main()
{
while(1)
{
struct timeval stStart, stEnd;
gettimeofday(&stStart, NULL);
struct timeval tv={0, 33000};
select(0,NULL,NULL,NULL,&tv);
gettimeofday(&stEnd, NULL);
unsigned int iDelayUseTime = ((stEnd.tv_sec-stStart.tv_sec)*1000*1000+(stEnd.tv_usec-stStart.tv_usec));
printf("use time:%u\n", iDelayUseTime);
if(iDelayUseTime < 30000 || 35000 < iDelayUseTime)
exit(0);
}
return 0;
}
运行结果:
Note that the timeout interval will be rounded up to the system clock granularity, and kernel scheduling delays mean that the blocking interval may overrun by a small amount.
到时间了内核也只是把这个线程丢进可调度队列,是不是实际分配cpu给它取决于调度策略。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。