从线程调用的睡眠永远不会用很长时间完成

时间:2012-09-21 17:13:59

标签: c++ multithreading time sleep chrono

我有一个基本的计时器功能,但它只能在睡眠周期很小的情况下工作。如果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,

将永远不会输出“完成”。

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

0 个答案:

没有答案