一个系统肯定少不了timer,在doubango中关于timer的声明(实现)是在tsk_timer.h(c)中。
总结一下timer的用法:
1,调用tsk_timer_mgr_global_ref获取timer mgr的引用。注意当使用完时一定要tsk_timer_mgr_global_unref,避免内存泄露。
2,调用tsk_timer_mgr_global_start来启动timer mgr。注意这个是可以多次调用无副作用的。
3,tsk_timer_mgr_global_schedule来启动一个timer,参数看字面意思即可理解。返回一个timer_id,如果启动多个timer使用相同的callback函数或者有需要cancel的情况,则要保存这个id。
4,tsk_timer_manager_cancel用来取消一个timer。
以上是使用global timer mgr的方法,对于一般情况足够了,但如果你需要自己的timer mgr也是可以的,调用对应的接口可以create,start,schedule和stock等操作。
下面来看一下timer的实现:
typedef struct tsk_timer_manager_s
{
TSK_DECLARE_RUNNABLE;
void* mainThreadId[1];
tsk_condwait_handle_t *condwait;
tsk_mutex_handle_t *mutex;
tsk_semaphore_handle_t *sem;
tsk_timers_L_t *timers;
}
tsk_timer_manage