#ifndef _THREAD_POOL_QUEUE_H_ #define _THREAD_POOL_QUEUE_H_ #include "glo_def.h" /** * @struct task_t * @brief the work struct * * @var run Pointer to the function that will perform the task. * @var argv Argument to be passed to the run function. */ typedef struct queue_task { void* (*run)(void *); void* argv; }task_t; typedef struct queue { int head; int tail; int size; int capcity; task_t* tasks; } queue_t; // API /** * @function threadpool_create * @brief create queue * @param size the size of queue * @return created queue */ queue_t *queue_create(int size); BOOL queue_is_full(queue_t* q); BOOL queue_is_empty(queue_t* q); BOOL queue_push_tail(queue_t* q, task_t* data); task_t* queue_pop_head(queue_t* q); void queue_free(queue_t* q); #endif