Linux下的定時器用法

2021-06-08 19:52:07 字數 1694 閱讀 9517

在linux下提供了兩種基本的timer機制:alarm和settimer。

1、alarm

#include

unsigned int alarm(unsigned int seconds);

這是個最簡單的timer,當呼叫了alarm(n)時,等待n秒後,就會觸發一次sigalrm訊號,故需要在呼叫alarm函式前先設定好 sigalrm訊號對應的處理函式才行,而當呼叫alarm(0)時,表示停止當前的timer處理,不要發出sigalrm訊號。

例(第一次等待1秒觸發timer,之後都是2秒觸發):

#include

#include

#include

using namespace std;

void my_alarm_handler(int a)

int main()

return 0;

}2、settimer

#include

#define itimer_real 0

#define itimer_virtual 1

#define itimer_prof 2

int getitimer(int which, struct itimerval *value);

int setitimer(int which, const struct itimerval *value,struct itimerval *ovalue);

settimer和gettimer函式都提供了三種類別的timer供使用:

1)、itimer_real:以系統實際的時間來計算,觸發時會發出sigalrm訊號。

2)、itimer_virtual:只計算程序的執行時間(在使用者態),觸發時會發出sigvtalrm訊號。

3)、itimer_prof:計算程序在使用者態和核心態的處理時間,觸發時會發出sigprof訊號。

通過第乙個引數which來指定要使用哪一種timer(itimer_real、itimer_virtual、itimer_prof)。 settimer函式是用來設定對應的timer的觸發時間是多少,而gettimer函式是用來獲取上一次timer設定的時間。設定的時間是乙個結構 體struct itimerval:

struct itimerval ;

struct timeval ;

settimer由第二個引數value設定觸發時間,第三個引數ovalue用來獲取上一次settimer設定的itimerval值(該引數可以設 置為null)。對於itimerval裡面變數的值,當我們設定it_interval的值為0時,timer只會觸發一次,而it_value設定為 0時則表示timer結束。

返回值:0為成功,-1為失敗。

例(第一次等待1秒觸發timer,之後都是2秒觸發):

#include

#include

#include

using namespace std;

void my_alarm_handler(int a)

int main()

signal( sigalrm, my_alarm_handler );

while(1)

return 0;

}通過上面的例子,我們可以知道對於linux內建timer只能同一時間處理3個timer,如果需要多個的話,那麼這就是個問題了。不過我們可以通過sleep函式或time函式來結合使用實現定時功能

MFC 定時器用法

mfc定時器的使用 1.在標頭檔案定義乙個afx msg void ontimer uint ptr nidevent 函式 定義乙個定時器id define systimetimer 1 2.實現該函式 void cminigatetes lg ontimer uint ptr nidevent ...

as3 定時器用法

關鍵字 flas actionscript3.0 雖 然flash擁有越來越強大的周邊功能,但其核心依然是一款動畫製作軟體。在flash設計環境中,不編寫指令碼 也能快速製作出效果驚人的時間軸動 畫。但此類動畫是固定的,無法根據環境動態調整。使用actionscript生成和控制動畫,才能隨心駕馭動...

IOS開發 NSTimer 定時器用法總結

nstimer在ios開發中會經常用到,尤其是小型遊戲,然而對於初學者時常會注意不到其中的記憶體釋放問題,將其基本用法總結如下 一 初始化方法 有五種初始化方法,分別是 nstimer timerwithtimeinterval nstimeinterval ti invocation nsinvo...