在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...