02 Información de descripción de la estructura del grupo de subprocesos

02 Información de descripción de la estructura del grupo de subprocesos

01 Análisis del principio del grupo de subprocesos
02 Información de descripción de la estructura del grupo de subprocesos
03 Análisis de la función del
grupo de subprocesos 04 Archivo de encabezado completo y archivo de implementación (.c) del grupo de subprocesos

直接看代码,代码里有详细的注释。

//描述任务队列的结构体
typedef struct {
    
    
    void *(*function)(void *);          /* 函数指针,回调函数 */
    void *arg;                          /* 上面函数的参数 */
} threadpool_task_t;                    /* 各子线程任务结构体 */

/* 描述线程池相关信息 */
struct threadpool_t {
    
    
    //两把锁与两个条件变量
    pthread_mutex_t lock;               /* 用于锁住本结构体 */    
    pthread_mutex_t thread_counter;     /* 记录忙状态线程个数的琐 --busy_thr_num */

    pthread_cond_t queue_not_full;      /* 当任务队列满时,添加任务的线程(server主线程)阻塞,等待此条件变量.用于S/C之间 */
    pthread_cond_t queue_not_empty;     /* 任务队列里不为空时,通知等待任务的线程.用于Ser即主线程与各个子线程之间. */

    //线程id
    pthread_t *threads;                 /* 存放线程池中每个线程的tid。数组 */
    pthread_t adjust_tid;               /* 存管理线程tid */

    //任务队列,记录客户端的任务请求
    threadpool_task_t *task_queue;      /* 任务队列 */

    //线程个数的范围、实际存在的线程、正在工作的线程、准备销毁的线程
    int min_thr_num;                    /* 线程池最小线程数 */
    int max_thr_num;                    /* 线程池最大线程数 */
    int live_thr_num;                   /* 当前存活线程个数 */
    int busy_thr_num;                   /* 忙状态线程个数 */
    int wait_exit_thr_num;              /* 要销毁的线程个数 */

    //任务队列的头尾指针、队列的实际大小、队列的上限个数
    int queue_front;                    /* task_queue队头下标 */
    int queue_rear;                     /* task_queue队尾下标 */
    int queue_size;                     /* task_queue队中实际任务数 */
    int queue_max_size;                 /* task_queue队列可容纳任务数上限 */

    int shutdown;                       /* 标志位,线程池使用状态,true或false */
};

Supongo que te gusta

Origin blog.csdn.net/weixin_44517656/article/details/108690962
Recomendado
Clasificación