我想创建一个调度程序,所以我每隔一秒写入一次休眠循环,但是当我测试调度程序时,事件不会在定义的时间内调用。
我尝试简化验证逻辑,但不知何故,在定义的时间内没有真正调用print。我打算用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分钟。
答案 0 :(得分:0)
根据手册页
usleep()函数暂停执行调用线程(至少)usec微秒。任何系统活动或处理呼叫所花费的时间或系统定时器的粒度都可能会略微延长睡眠时间。
换句话说, usleep()函数使用系统中可用的精度暂停执行大于或等于给定时间段。
我假设您的信息中系统的时间粒度约为50微秒。无论参数值如何,这都是最小暂停时间。