我的程序计划循环以从队列中获取一些元素,但是,保持循环可能会占用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();
}
}
int nanosleep(const struct timespec *req, struct timespec *rem);
重用req
完全没问题,因为它被宣布为const
。既然你不是自己改变它,并且函数的const
-ness也意味着它也没有改变它,重用它不会有任何伤害。 (以上不适用于rem
,因为它是写入的,但你没有使用它,所以你不必担心它。)