pika_hal_ex.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #ifndef PIKA_HAL_CIRCULAR_PTR_QUEUE_H
  2. #define PIKA_HAL_CIRCULAR_PTR_QUEUE_H
  3. #include "pika_hal.h"
  4. #include "PikaObj.h"
  5. // 定义循环指针队列的结构体
  6. typedef struct pika_hal_CircularPtrQueue {
  7. void** buffer; // 存储元素的缓冲区
  8. size_t head; // 队头指针
  9. size_t tail; // 队尾指针
  10. size_t count; // 当前元素数量
  11. size_t capacity; // 缓冲区容量
  12. #if PIKA_HAL_CIRCULAR_QUEUE_MUTEX_ENABLE
  13. pika_platform_thread_mutex_t mutex; // 互斥锁
  14. #endif
  15. } pika_hal_CircularPtrQueue;
  16. // 创建一个新的循环指针队列
  17. pika_hal_CircularPtrQueue* pika_hal_circularPtrQueue_create(size_t capacity);
  18. // 向队列中添加一个元素
  19. int pika_hal_circularPtrQueue_enqueue(pika_hal_CircularPtrQueue* cb,
  20. void* data);
  21. // 从队列中移除一个元素
  22. int pika_hal_circularPtrQueue_dequeue(pika_hal_CircularPtrQueue* cb,
  23. void** value);
  24. // 销毁队列并释放相关资源
  25. int pika_hal_circularPtrQueue_deinit(pika_hal_CircularPtrQueue* cb);
  26. // 获取队列中的元素数量
  27. size_t pika_hal_circularPtrQueue_getCount(pika_hal_CircularPtrQueue* cb);
  28. // 检查队列是否为空
  29. int pika_hal_circularPtrQueue_isEmpty(pika_hal_CircularPtrQueue* cb);
  30. // 检查队列是否已满
  31. int pika_hal_circularPtrQueue_isFull(pika_hal_CircularPtrQueue* cb);
  32. // 查看队列头部的元素,但不移除它
  33. int pika_hal_circularPtrQueue_peek(pika_hal_CircularPtrQueue* cb, void** value);
  34. #endif // PIKA_HAL_CIRCULAR_PTR_QUEUE_H