代码拉取完成,页面将自动刷新
//线程池头文件
#ifdef _THREADPOOL_H
#define _THREADPOOL_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <pthread.h>
#include <unistd.h>
//任务结构体
typedef struct _PoolTask
{
int tasknum; //模拟任务编号
void *arg; //回调函数参数
void (*task_func)(void *arg); //任务的回调函数
}PoolTask;
//线程池结构体
typedef struct _THREADPOOL_H
{
int max_job_num; //最大任务数
int job_num; //实际任务数
PoolTask *tasks; //任务队列数组
int job_push; //入队位置
int job_pop; //出队位置
int thr_num; //线程池内线程个数
pthread_t *pthreads; //线程池内线程数组
int shutdown; //是否关闭线程池
pthread_mutex_t pool_lock; //线程池的锁
pthread_cond_t empty_task; //任务队列为空的条件变量
pthread_cond_t not_empty_task; //任务队列不为空的条件变量
}ThreadPool;
//线程池创建函数——thrnum代表线程个数,maxtasknum代表最大任务数
void create_threadpool(int thrnum, int maxtasknum);
//线程池摧毁函数
void destroy_threadpool(ThreadPool *pool);
//添加任务到线程池
void addtask(ThreadPool *pool);
//任务回调函数
void taskRun(void *arg);
#endif
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。