1 初始化一些線程
- 管理者線程
不處理任務(wù)
- 工作的線程
只負(fù)責(zé)處理任務(wù)
去任務(wù)隊(duì)列中領(lǐng)任務(wù)并處理
- 初始化的時(shí)候給定一個(gè)最小線程數(shù)
2 需要有一個(gè)管理者線程
- 每隔一段時(shí)間去判斷一次
- 什么時(shí)候需要?jiǎng)?chuàng)建
指定一個(gè)峰值:工作的線程超過(guò)85%触幼,工作/存活 > 0.85
超過(guò)峰值:創(chuàng)建新的線程 每次創(chuàng)建一部分待用骨田,按照一定的步長(zhǎng)和比例去創(chuàng)建
- 什么時(shí)候需要銷(xiāo)毀
工作的線程/存活的線程 < 20%暑脆,大部分都在歇著
按照一定比例去殺死不干活的線程
3 線程池API
//創(chuàng)建線程池涣澡,池里最小3個(gè)線程,最大100個(gè)弃秆,隊(duì)列最大100
threadpool_t * thp = threadpool_create(3,100,100);
//向線程池添加任務(wù)届惋;thp是線程池髓帽,process是回調(diào)函數(shù)(模擬處理業(yè)務(wù)),(void*)&num[i]是給process傳參
threadpool_add(thp, process, (void*) & num[i]);