我的程序计划循环以从队列中获取一些元素,但是,继续循环可能会导致 CPU 使用率过高,我想知道是否要等待 1 毫秒才能进入 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();
}
}
最佳答案
来自 man 2 nanosleep
:
int nanosleep(const struct timespec *req, struct timespec *rem);
重用 req
非常好,因为它被声明为 const
。由于您没有自己更改它,并且该函数的 const
特性意味着它也没有更改它,因此重用它不会有任何坏处。 (以上内容对于 rem
不成立,因为它已被写入,但您没有使用它,所以您不必担心它。)
关于c++ - 可以将 struct timespec 重用于 nanosleep 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52231783/