我的程序计划循环以从队列中获取某些元素,但是,保持循环可能会占用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();
}
}
答案 0 :(得分:1)
int nanosleep(const struct timespec *req, struct timespec *rem);
重用req
很好,因为它被声明为const
。由于您自己没有更改它,并且该函数的const
性质也没有更改它,因此重用它不会造成任何危害。 (由于rem
上面的内容已被写入,因此并非如此,但是您并未使用它,因此您不必担心。)