#include<stdio.h>
#include<stdbool.h>
#include<time.h>
#define MAX_TIMER_COUNT 10
//定时器开始的时间数组
clock_t gStartTimes[MAX_TIMER_COUNT];
//记录超时时间数组
int gTimeOuts[MAX_TIMER_COUNT];
//定时器的回调函数
typedef void (*TIMER_CALLBACK_FUNC)(size_t id);
//保存所有的回调函数
TIMER_CALLBACK_FUNC gTimerFunc[MAX_TIMER_COUNT];
//当前添加的定时器的数量
int gTimerCount = 0;
//添加定时器
bool addTimer(int timeout, TIMER_CALLBACK_FUNC func)
{
gStartTimes[gTimerCount] = clock();
gTimeOuts[gTimerCount] = timeout;
gTimerFunc[gTimerCount] = func;
gTimerCount++;
return true;
}
//更新定时器
void updateTimer()
{
//遍历所有的计时器
for (size_t i = 0; i < gTimerCount; i++)
{
if (clock() - gStartTimes[i] > gTimeOuts[i])
{
gTimerFunc[i](i);
gStartTimes[i] = clock();
}
}
}
void show1(size_t id)
{
printf("show1...\n");
}
void show2(size_t id)
{
printf("show2...\n");
}
int exec()
{
while (true)
{
updateTimer();
}
return 0;
}
int main(int argc, char* argv[])
{
//相当于一个注册计时器的作用,到达一定的时间再实现show函数是由下面那个updateTimer去实现计时
addTimer(1000, show1);
addTimer(500, show2);
return exec();
}
03-23
1295

11-30
02-06
864
