请教下linux中关于sleep()函数的问题
大家好,我现在想利用线程做一个定时器的小程序:
我的代码如下:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <pthread.h>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;}