队列 (queue)
通用 FIFO 队列,基于 list_head_t 实现,内部无锁,由调用者保证一致性,支持自定义清理回调。
数据结构
struct queue_node_t {
struct list_head_t entry;
void * data;
};
struct queue_t {
struct list_head_t head;
};
API
struct queue_t * queue_alloc(void);
void queue_free(struct queue_t * q, void (*cb)(void *));
void queue_clear(struct queue_t * q, void (*cb)(void *));
int queue_isempty(struct queue_t * q);
void queue_push(struct queue_t * q, void * data);
void * queue_pop(struct queue_t * q);
void * queue_peek(struct queue_t * q);
queue_alloc— 创建空队列,失败返回 NULLqueue_free— 销毁队列,cb 为每个节点 data 的清理回调(可为 NULL)queue_clear— 清空队列,cb 为每个节点 data 的清理回调(可为 NULL)queue_isempty— 队列为空返回 1,否则返回 0queue_push— 入队queue_pop— 出队,空时返回 NULLqueue_peek— 查看队首元素(不移除),空时返回 NULL