本身程序没有多少耗费cpu的操作,但是使用top命令查看的cpu占用率很高。
主要原因是在for循环或while(1)循环中没有加sleep,导致占用cpu时间过长。
(使用sleep(0)即可)
对于pthread_cond_timedwait函数来说,是不怎么占用cpu的。
使用例程可以参考如下:
struct timespec ts;
//超时时间设置 默认3秒
int time_num =3;
for( ; ; )
{
pthread_mutex_lock(&mutex_mut); // 拿到互斥锁,进入临界区
clock_gettime(CLOCK_REALTIME, &ts); //获取当前时间
ts.tv_sec += time_num; //在当前时间基础上增加3s,即延时3s
answer = pthread_cond_timedwait(&pth_cond, &mutex_mut, &ts); //线程等待
/* do something */
pthread_mutex_unlock(&mutex_mut);
/*防止过多占用CPU*/
sleep(0);
}