簡單的C語言模擬定時器,循環時間+絕對時間,根據《精通UNIX下C語言編程與項目實踐》書上的例子搬過來的,挺好的,可能以後有用
#include<stdio.h>
#include<time.h>
#define MAXTIMER 20
typedef struct stuSimTimer{
char szName[20];//定時器名稱
int nInterval;//定時間隔,值爲0時取消定時
time_t nLast;//上次定時的系統時間
//int nRemain;//剩餘定時時間
int (*pfunc)(char *); //回調函數指針
}SIMTIMER;
//回調函數
int func1(char *p){
printf("----%s----\n",p);
return 0;
}SIMTIMER sTimer[MAXTIMER] =
{
//定時器TIME1 定時間隔10,
{"TIME1",2,0,func1},
{"TIME2",4,0,func1}
};int nTopTimer = 2;
int main(){
int i;
//循環定時
while(1){
//sleep(1);
//遍歷模擬定時器數組
for(i = 0;i < nTopTimer;i++){
//絕對時間 判斷模擬定時器是否定時到達
if(time(NULL) - sTimer[i].nLast >= sTimer[i].nInterval){
//執行模擬定時器回調函數
sTimer[i].pfunc(sTimer[i].szName);
//重置模擬定時器
sTimer[i].nLast = time(NULL);
}
}
}
return 0;
}