为了避免频繁创建销毁线程, 一开始创建一堆线程备用.
使用条件变量(任务队列不为空)通知线程池来任务队列取任务. 任务队列要加锁.
所有线程调用pthread_cond_wait()
等待条件变量, server使用pthread_signal()/broadcast()唤醒线程.
当任务队列满了后, 线程调用pthread_signal()发送条件变量(任务队列不为满)唤醒server, 类似于生产者消费者模型.
扩充线程池需要设置扩充步长, 还要记录当前存活, 忙碌的线程数量, 需要一个结构体去记录各种信息.
任务队列中的每个元素都是一个子线程任务结构体, 包含回调函数及其参数.
网友评论