C语言:程序的CPU占用率过大

本身程序没有多少耗费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);
	}

你可能感兴趣的:(C/C++)