当前位置: 技术问答>linux和unix
请教下linux中关于sleep()函数的问题
来源: 互联网 发布时间:2017-03-11
本文导语: 大家好,我现在想利用线程做一个定时器的小程序: 我的代码如下: #include #include #include #include #include typedef void (*timeoutCallBack)(void); struct timerStruct{ int time_ms; timeoutCallBack timeoutcallback; }; typedef ...
大家好,我现在想利用线程做一个定时器的小程序:
我的代码如下:
我的代码如下:
#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 %dn",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("timeoutn");
}
int main(void)
{
int i;
createTimer(100,timeoutProc);
while(1)
{
for(i=0;i