我有一个基本的计时器功能,但它只能在睡眠周期很小的情况下工作。如果DELAY小于约500ms,该功能将正常工作。我已经尝试过其他睡眠方法,包括sleep(),usleep(),nanosleep()和gettimeofday(),当DELAY(针对每个函数调整)太大时,它们都停止工作(通常在0.3和之间停止工作) 0.5秒)。当它不起作用时,睡眠功能不会返回任何内容,它将永远不会完成执行。
例如:
void executeTimer(MyObject *obj) {
printf("Starting timer, delay = %d\n", DELAY);
std::this_thread::sleep_for(std::chrono::milliseconds(DELAY));
printf("Complete\n");
obj->doSomething();
}
稍后在程序中通过以下方式调用:
timer = std::thread(executeTimer, this);
如果DELAY大于约400-500,将永远不会输出“完成”。
有谁知道为什么这不起作用?谢谢你的帮助!