純C語言的一個模擬定時器程序

簡單的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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章