struct timespec可以重用于nanosleep吗?

时间:2018-09-08 03:43:23

标签: c++ c sleep

我的程序计划循环以从队列中获取某些元素,但是,保持循环可能会占用CPU使用率,我想知道纳米睡眠是否需要等待1毫秒。我可以只在全局上创建struct timespec shared_time_wait;并重用吗?

struct timespec shared_time_wait;

void wait1ms()
{   
    nanosleep(&shared_time_wait, NULL);
}

void init() {
 unsigned int ms = 1;
 shared_time_wait.tv_sec = ms / (1000 * 1000);
 shared_time_wait.tv_nsec = (ms % (1000 * 1000)) * 1000;

 for(;;) {
  wait1ms();
 }
}

1 个答案:

答案 0 :(得分:1)

来自man 2 nanosleep

int nanosleep(const struct timespec *req, struct timespec *rem);

重用req很好,因为它被声明为const。由于您自己没有更改它,并且该函数的const性质也没有更改它,因此重用它不会造成任何危害。 (由于rem上面的内容已被写入,因此并非如此,但是您并未使用它,因此您不必担心。)