linux定时器与线程,Linux下的多线程定时器实现

#define DEFAULT_INTERVAL 1

int TIMER_CNT = 0;

class Timer;                //定时器

class TimerManager;        //定时器管理器

class TimerManager {

friend class Timer;    //友元类,Timer类可分享此类的方法

public:

typedef enum {

TIMER_MANAGER_STOP=0,

TIMER_MANAGER_START

}TimerManagerState;

static TimerManager *instance();    //当前实例

void start();                      //启动当前线程,运行process函数

void stop();                        //终止当前线程

void dump();                        //清理当前剩下的无用定时器

void add_timer(Timer *vtimer);      //线程安全的增加定时器

void remove_timer(Timer *vtimer);  //线程安全的移除定时器

protected:

static void *process(void *);

private:

TimerManager();

void add_timer_unsafe(Timer *vtimer);  //线程非安全的增加定时器,本类使用

void remove_timer_unsafe(Timer *vtimer);//线程非安全的移除定时器,本类使用

static TimerManager *m_instance;

static pthread_mutex_t workmutex;

TimerManagerState m_state;

LIST_HEAD(,Timer) list_;                //链表头

static int mark;

};

class Timer {

friend class TimerManager;

public:

typedef enum {

TIMER_IDLE = 0,

TIMER_ALIVE,

TIMER_TIMEOUT

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值