更多代码详细请参见:https://github.com/wcwu/Timout-Event
超时事件任务包括几个部分:
- 事件结构体的构造;
- 事件的初始化;
- 事件的注册;
- 事件的删除;
- 事件的触发和执行。
事件结构体构造:结构体包括两个部分,一个是事件本事的结构体,该结构体包含每个事件的节点信息,主要是每个节点的超时时间记录和超时处理函数。
typedef struct timeout_node{
int fnode_id;
uint64_t start_time;
uint64_t timeout;
handler_t func;
}tnode;
typedef struct timeout_event{
tnode** event_array;
int size;
int used;
}tevent;
事件的初始化:初始化包括事件和节点两个部分,各初始化对应相应的free函数。
tevent* event_init(int max_event_num){
tevent* tv = (tevent*)malloc(sizeof(*tv));
tv->size = max_event_num;
tv->used = 0;
tv->event_array = calloc(max_event_num, sizeof(*tv->event_arra