1 初始化一些線程
- 管理者線程
不處理任務 - 工作的線程
只負責處理任務
去任務隊列中領任務并處理 - 初始化的時候給定一個最小線程數
2 需要有一個管理者線程
- 每隔一段時間去判斷一次
- 什么時候需要創(chuàng)建
指定一個峰值:工作的線程超過85%,工作/存活 > 0.85
超過峰值:創(chuàng)建新的線程 每次創(chuàng)建一部分待用,按照一定的步長和比例去創(chuàng)建 - 什么時候需要銷毀
工作的線程/存活的線程 < 20%,大部分都在歇著
按照一定比例去殺死不干活的線程
3 線程池API
//創(chuàng)建線程池,池里最小3個線程,最大100個,隊列最大100
threadpool_t * thp = threadpool_create(3,100,100);
//向線程池添加任務;thp是線程池,process是回調函數(模擬處理業(yè)務),(void*)&num[i]是給process傳參
threadpool_add(thp, process, (void*) & num[i]);