typedef struct Job
{
status (*fun)(void *, const void *);
void* arg1;
void* arg2;
}Job;
typedef struct
{
Job *base; // 队列
int8_t *avail; // 空闲位置
int8_t *work; // 占用位置
int8_t front; // 队列头部
int8_t avail_back; // 队列尾部
int8_t work_back; // 队列尾部
pthread_t *threads; // 工作线程
pthread_mutex_t lock; // 队列锁
pthread_cond_t ready; // 条件变量
pthread_cond_t empty; // 条件变量
bool shutdown; // 是否撤销工作线程
}JobQueue;
status init_job_queue();
void put_job(status (*)(void *, const void *), void *, void *);
void clear_job_queue();
status free_job_queue();