0

我有一个基本的定时器功能,但它只会在睡眠时间相当短的时候工作。如果 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,则永远不会输出“完成”。

有谁知道为什么这不起作用?谢谢您的帮助!

4

0 回答 0