| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #ifndef PIKA_HAL_CIRCULAR_PTR_QUEUE_H
- #define PIKA_HAL_CIRCULAR_PTR_QUEUE_H
- #include "pika_hal.h"
- #include "PikaObj.h"
- // 定义循环指针队列的结构体
- typedef struct pika_hal_CircularPtrQueue {
- void** buffer; // 存储元素的缓冲区
- size_t head; // 队头指针
- size_t tail; // 队尾指针
- size_t count; // 当前元素数量
- size_t capacity; // 缓冲区容量
- #if PIKA_HAL_CIRCULAR_QUEUE_MUTEX_ENABLE
- pika_platform_thread_mutex_t mutex; // 互斥锁
- #endif
- } pika_hal_CircularPtrQueue;
- // 创建一个新的循环指针队列
- pika_hal_CircularPtrQueue* pika_hal_circularPtrQueue_create(size_t capacity);
- // 向队列中添加一个元素
- int pika_hal_circularPtrQueue_enqueue(pika_hal_CircularPtrQueue* cb,
- void* data);
- // 从队列中移除一个元素
- int pika_hal_circularPtrQueue_dequeue(pika_hal_CircularPtrQueue* cb,
- void** value);
- // 销毁队列并释放相关资源
- int pika_hal_circularPtrQueue_deinit(pika_hal_CircularPtrQueue* cb);
- // 获取队列中的元素数量
- size_t pika_hal_circularPtrQueue_getCount(pika_hal_CircularPtrQueue* cb);
- // 检查队列是否为空
- int pika_hal_circularPtrQueue_isEmpty(pika_hal_CircularPtrQueue* cb);
- // 检查队列是否已满
- int pika_hal_circularPtrQueue_isFull(pika_hal_CircularPtrQueue* cb);
- // 查看队列头部的元素,但不移除它
- int pika_hal_circularPtrQueue_peek(pika_hal_CircularPtrQueue* cb, void** value);
- #endif // PIKA_HAL_CIRCULAR_PTR_QUEUE_H
|