我有一个基本的定时器功能,但它只会在睡眠时间相当短的时候工作。如果 DELAY 小于约 500 毫秒,该功能将正常工作。我尝试过其他睡眠方法,包括 sleep()、usleep()、nanosleep() 和 gettimeofday(),当 DELAY(针对每个函数调整)太大(通常在 0.3 到 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,则永远不会输出“完成”。
有谁知道为什么这不起作用?谢谢您的帮助!