结构timespec可以重复使用nanosleep吗?

问题描述 投票:1回答:1

我的程序计划循环以从队列中获取一些元素,但是,保持循环可能会占用CPU的开销,我很想在1ms等待时使用nanosleep。我可以在全球范围内制作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();
 }
}
c++ c sleep
1个回答
1
投票

来自man 2 nanosleep

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

重用req完全没问题,因为它被宣布为const。既然你不是自己改变它,并且函数的const-ness也意味着它也没有改变它,重用它不会有任何伤害。 (以上不适用于rem,因为它是写入的,但你没有使用它,所以你不必担心它。)

© www.soinside.com 2019 - 2024. All rights reserved.