[英]C++ count delay time?
我想创建一个调度程序,所以我每隔一秒编写一次睡眠循环,但是当我测试调度程序时,在定义的时间内未调用该事件。
我尝试使验证逻辑变得简单,但是以某种方式在定义的时间内并没有真正调用打印。 我打算用usecond(1)*1000000;
将其设置为1秒usecond(1)*1000000;
#include <iostream>
#include <unistd.h>
using namespace std;
int main() {
unsigned int delay = 0;
for (;;) {
usleep(1);
delay++;
if (delay >= 1000000) {
cout << "TICK\n" << flush;
}
}
}
结果出现在1分钟内。
根据手册页
usleep()函数将调用线程的执行挂起(至少)usec微秒。 任何系统活动,处理呼叫所花费的时间或系统计时器的粒度都可能会稍微延长睡眠时间。
换句话说, usleep()函数以系统中可用的精度将执行挂起的时间大于或等于给定时间段。
根据您的信息,我认为系统中的时间间隔约为50微秒。 这是最小暂停时间,与参数值无关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.