标签:stat 版本 问题 int start malloc free shu 多线程 void
在多线程的应用中,线程的频繁创建和销毁会浪费时间,从而影响效率,所以引进线程池和概念,将多个线程维护在线程池中,避免了线程频繁创建与销毁的开销问题
struct threadpool_t
{
pthread_mutex_t lock; //互斥锁
pthread_cond_t notify; //条件变量:配合互斥锁来避免死锁
pthread_t *threads; //线程数组
threadpool_task_t *queue; //任务队列
int thread_count; //线程数
int queue_size; //任务数
int head; //头部元素
int rail; //尾部元素
int count; //等待的任务数
int shutdown; //关闭状态
int started; //已经启动的线程数
}
//线程池创建
threadpool_t *threadpool_create(int thread_count,int queue_size,int flags);
//添加任务
int threadpool_add(threadpool_t *pool, void (*function)(void *),void *argument, int flags);
//线程池销毁
int threadpool_destroy(threadpool_t *pool, int flags);
//线程池释放
int threadpool_free(threadpool_t *pool);
//为线程池分配任务
static void *threadpool_thread(void *threadpool);
threadpool_t *threadpool_create(int thread_count,int queue_size,int flags)
{
threadpool_t *pool;
do{
if(thread_count <= 0 || thread_count > MAX_THREADS || queue_size <= 0|| queue_size > MAX_QUEUE) return NULL;
if((pool = (threadpool_t *)malloc(sizeof(threadpool_t))) == NULL) break;
pool->thread_count = 0;
pool->queue_size = queue_size;
pool->head = pool->tail = pool->count = pool->shutdown = pool->started = 0;
}
}
标签:stat 版本 问题 int start malloc free shu 多线程 void
原文地址:https://www.cnblogs.com/bytepro/p/thrreadpool_t.html