在时间紧迫的情况下忙着旋转而不是睡觉

时间:2017-04-19 12:22:24

标签: c++ windows multithreading

我偶然发现了一个引发一些时间关键功能的问题。我的线程必须执行一些操作然后睡眠完全 60ms。由于所需的平台是Windows(语言C ++),我知道它确实存在像这样的时间测量问题,我有一个想法来提高线程睡眠的准确性。

而不是:

void run() {
    do_some_action();
    sleep(60); // ms
}

我想这样做:

void run() {
    do_some_action();
    curr_time = get_time_in_nanosec(); // with QueryPerformanceFrequency/QueryPerformanceCounter
    while(get_time_in_nanosec() - curr_time < 60000000 /*60ms*/) {}
}

是否值得额外的CPU使用量以及如何衡量性能(是否正确睡眠)?

0 个答案:

没有答案