int liveNum; //存货的工作线程数(也就是被唤醒的线程,却没有资格去获取任务的线程) int exitNum; //销毁的工作线程数(因为可能工作线程存在,但是却不工作,我们需要杀掉一些不必要的线程) /* 由于任务队列为临界资源: 工作线程(消费者)可能有多个会同时竞争该资源 同时多生产者线程之间(也就是往任务队列放任...
add_task(pool, mytask, (void *)((rand()%10)*1L), (void *)("heiheihei")); //3, 检查当前线程数量 printf("当前线程数量为:%d\n", remove_thread(pool,0)); sleep(9); //增加线程数量 add_thread(pool,2); sleep(5); //6, 删除线程(随意,因为删除线程池的时候,会全部删除线程) printf...
C语言标准库中并没有提供线程池的实现,线程池需要手搓实现线程池的基本思路是:先创建几个固定的线程,让每个线程运行起来,然后通过互斥锁和条件变量使得每个线程进入等待状态,当需要分派线程时,改变条件变量,...Task结构体用于表示线程池需要执行的任务,包括属性函