C/C++ code#include
#include
#include
#include
#include
typedef void (*timeoutCallBack)(void);
struct timerStruct{
int time_ms;
timeoutCallBack timeoutcallback;
};
typedef struct timerStruct timer_t2;
int timerStartFlag;
void *timer_thread(void *arg)
{
timer_t2 *timeArg=(timer_t2*)arg;
int time=timeArg->time_ms;
time*=1000;
printf("flag is %d\n",timerStartFlag);
while(timerStartFlag)
{
usleep(time);
if(timeArg->timeoutcallback)
timeArg->timeoutcallback();
}
}
void timerStop()
{
timerStartFlag=0;
}
void createTimer(int time_ms,void(*callback)(void))
{
timer_t2 timeArg;
timeArg.time_ms=time_ms;
timeArg.timeoutcallback=callback;
pthread_t timeid;
timerStartFlag=1;
pthread_create(&timeid, NULL, &timer_thread, (void *)&timeArg);
}
void timeoutProc(void)
{
printf("timeout\n");
}
int main(void)
{
int i;
createTimer(100,timeoutProc);
while(1)
{
for(i=0;i<10000000;i++); ///只是为了测试
//sleep(10); /// 为什么这里使用了sleep(10);,定时器就死掉了,
}
return 0;
}