在Linux下創(chuàng)建高效的線程池可以通過使用線程池庫來實(shí)現(xiàn),比如使用pthread庫或者boost庫。下面是一個(gè)簡單的示例代碼演示如何創(chuàng)建一個(gè)基本的線程池:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define THREAD_POOL_SIZE 5
void* worker(void* arg) {
int* task = (int*)arg;
printf("Processing task %d\n", *task);
// 模擬任務(wù)執(zhí)行
sleep(1);
free(task);
return NULL;
}
int main() {
pthread_t threads[THREAD_POOL_SIZE];
int i;
for (i = 0; i < THREAD_POOL_SIZE; i++) {
pthread_create(&threads[i], NULL, worker, NULL);
}
// 模擬任務(wù)分配
for (i = 0; i < 10; i++) {
int* task = (int*)malloc(sizeof(int));
*task = i;
// 簡單的任務(wù)分配策略,將任務(wù)分配給工作線程
pthread_create(&threads[i % THREAD_POOL_SIZE], NULL, worker, task);
}
for (i = 0; i < THREAD_POOL_SIZE; i++) {
pthread_join(threads[i], NULL);
}
return 0;
}
在這個(gè)示例代碼中,我們創(chuàng)建了一個(gè)包含5個(gè)線程的線程池,然后模擬了任務(wù)分配和任務(wù)執(zhí)行的過程。當(dāng)任務(wù)被分配給某個(gè)線程時(shí),該線程會(huì)執(zhí)行對應(yīng)的任務(wù)并釋放資源。最后我們等待所有線程執(zhí)行完畢后退出程序。
當(dāng)然,實(shí)際的線程池可能需要更復(fù)雜的任務(wù)調(diào)度和管理策略,比如任務(wù)隊(duì)列、線程的動(dòng)態(tài)創(chuàng)建和銷毀等。可以根據(jù)具體的需求和場景來設(shè)計(jì)和實(shí)現(xiàn)更加高效的線程池。