Linux中主函數任務負載對定時器的影響

現象及結論:

在這裏插入圖片描述

    由此可見,主函數任務負載對定時器定時精度影響不大~

測試代碼:

#include<iostream>
#include<sys/time.h>
#include<signal.h>
#include<unistd.h>//sleep

using namespace std;

void testFun(int a)
{
	int t_ = 0;
	
	//測試定時器任務負載對定時精度的影響
	// while(1)
	// {
	// 	t_ ++;
	// 	if( t_ > 2000000000)
	// 	{
	// 		cout << "t_ = " << t_ << endl;
	// 		    struct timeval curtime;
	// 			gettimeofday(&curtime,NULL);
	// 			cout << "               curtime.tv_sec:" << curtime.tv_sec << endl;
	// 			cout << "               curtime.tv_usec:" << curtime.tv_usec << endl;
	// 		break;
	// 	}
	// }
	cout << "Hello,Linux timer~" << endl;
	//exit(0);
}

int main()
{

    struct timeval curtime;
    gettimeofday(&curtime,NULL);
    cout << "curtime.tv_sec:" << curtime.tv_sec << endl;
    cout << "curtime.tv_usec:" << curtime.tv_usec << endl;
    

	struct itimerval timer;
	
	//週期定時器間隔
	timer.it_interval.tv_sec 	=1;
	timer.it_interval.tv_usec =	0;//0.5s=500ms=500*1000us
	//從設置定時器開始到第一次定時器生效的時間
	timer.it_value.tv_sec 	= 1;//1秒
	timer.it_value.tv_usec 	= 0;

	setitimer(ITIMER_REAL, &timer, NULL);
	signal(SIGALRM, testFun); 	
	
	int i = 0;
	while(1)
	{
		i++;
		//testFun(1);
		cout << "背景循環次數:" << i << endl;
		// usleep(1000*500);
		//sleep(10);
	//測試主函數任務負載對定時器的影響
		int t_ = 0;
		while(1)
		{
			t_ ++;
			if( t_ > 2000000000)
			{
				cout << "t_ = " << t_ << endl;
					struct timeval curtime;
					gettimeofday(&curtime,NULL);
					cout << "               curtime.tv_sec:" << curtime.tv_sec << endl;
					cout << "               curtime.tv_usec:" << curtime.tv_usec << endl;
				break;
			}
		}
	};
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章