swoole版本:1.7.7-stable Github地址:点此查看
1.Timer
1.1.swTimer_interval_node
声明:
// swoole.h 1045-1050h
typedef struct _swTimer_interval_node
{
struct _swTimerList_node *next, *prev;
struct timeval lasttime;
uint32_t interval;
} swTimer_interval_node;
成员 | 说明 |
---|---|
next,prev | 链表的后继、前驱指针 |
struct timeval lasttime | 持续时间 |
uint32_t interval | 间隔时间 |
说明:
swTimer_interval_node结构体是一个链表节点,存放一个固定间隔的定时器,其中lasttime为当前定时器从上一次执行到现在经过的时间,interval存放了定时器间隔。
该结构体用于swoole原本的timer相关操作。
1.2.swTimer_node
声明:
// swoole.h 1052-1058h
typedef struct _swTimer_node
{
struct _swTimer_node *next, *prev;
void *data;
uint32_t exec_msec;
uint32_t interval;
} swTimer_node;
成员 | 说明 |
---|---|
next,prev | 链表的后继、前驱指针 |
void *data | 数据域,存放额外的变量 |
uint32_t exec_msec | 定时器应当执行的时间 |
uint32_t interval | 间隔时间(无用,应废弃) |
说明:
swTimer_node结构体是一个链表节点,存放一个需要在指定时间执行的定时器,其中exec_msec为当前定时器需要执行的指定时间,interval存放了定时器间隔。
该结构体用于swoole的after函数操作。
1.3.swTimer
声明:
// swoole.h 1060-1081h
typedef struct _swTimer
{
swTimer_node *root;
/*--------------timerfd & signal timer--------------*/
swHashMap *list;
int num;
int interval;
int use_pipe;
int lasttime;
int fd;
swPipe pipe;
/*-----------------for EventTimer-------------------*/
struct timeval basetime;
/*--------------------------------------------------*/
int (*add)(struct _swTimer *timer, int _msec, int _interval, void *data);
int (*del)(struct _swTimer *timer, int _interval_ms);
int (*select)(struct _swTimer *timer);
void (*free)(struct _swTimer *timer);
/*-----------------event callback-------------------*/
void (*onTimer)(struct _swTimer *timer, int interval_msec);
void (*onTimeout)(struct _swTimer *timer, void *data);
} swTimer;
成员 | 说明 |
---|---|
swTimer_node *root | after的链表根节点 |
swHashMap *list | timer的链表根节点 |
int num | 当前定时器的数量 |
int interval | 定时器的基础响应间隔 |
int use_pipe | 是否使用管道通信 |
int lasttime | 持续时间(已废弃) |
int fd | 管道的写fd |
swPipe pipe | 管道 |
struct timeval basetime | EventTimer的基础时间 |
说明:
swTimer结构体定时器的实体对象,用于存储、管理和执行众多定时任务,包括timer和after两种不同类型的定时任务。
1.4.swTimer公共操作函数
1.4.1.swTimer_init
声明: