您的位置:首页 > 其它

定时器的简单实现即回调函数的运用

2015-08-17 19:10 295 查看

这两天在 研究回调函数就想实现简单的定时器,以下是鄙人的程序望指教。

#include <iostream>

#include <ctime>

using namespace std;

#define MAXNUM 256

typedef void (*timerProcessFunc)(void*);

typedef struct

{

 unsigned int id;

 int timeout;  //毫秒

}MyTimer;

static MyTimer timerList[MAXNUM] = {0};

int initTimer(MyTimer* timer, int timeout)

{

 if(!timer || timeout < 0) return false;

 timer->timeout = timeout;

    for(int i = 0; i < MAXNUM; i++)

 {

  if(timerList[i].id == 0)

  {

   timer->id = i;

   timerList[i] = *timer;

   return i;

  }

 }

 return -1;

}

void timerProcess(void* userPara)  //回调函数

{

 cout << "定时了" << *(double*)userPara << "毫秒" << endl;

}

void startTimer(int timerID, timerProcessFunc timerapp)

{

 clock_t start,finish;

    double totaltime;

    start = clock();

 /**********计时开始*****************/

 while(1)

 {

  finish = clock();

  totaltime = (double)(finish-start);

  if(totaltime >= timerList[timerID].timeout)

  {

   timerapp(&totaltime);

   break;

  }

 }

   /********************************/

}

void killTimer(int timerID)

{

 timerList[timerID].id = 0;

 timerList[timerID].timeout = 0;

}

int main()

{

 MyTimer t;

 int id;

 if((id = initTimer(&t, 10000)) != -1)

  startTimer(id, timerProcess);

 return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  定时器 回调函数