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();