在Linux下創建高效的線程池可以通過使用線程池庫來實現,比如使用pthread庫或者boost庫。下面是一個簡單的示例代碼演示如何創建一個基本的線程池:
#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);
// 模擬任務執行
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);
}
// 模擬任務分配
for (i = 0; i < 10; i++) {
int* task = (int*)malloc(sizeof(int));
*task = i;
// 簡單的任務分配策略,將任務分配給工作線程
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;
}
在這個示例代碼中,我們創建了一個包含5個線程的線程池,然后模擬了任務分配和任務執行的過程。當任務被分配給某個線程時,該線程會執行對應的任務并釋放資源。最后我們等待所有線程執行完畢后退出程序。
當然,實際的線程池可能需要更復雜的任務調度和管理策略,比如任務隊列、線程的動態創建和銷毀等。可以根據具體的需求和場景來設計和實現更加高效的線程池。