在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个线程的线程池,然后模拟了任务分配和任务执行的过程。当任务被分配给某个线程时,该线程会执行对应的任务并释放资源。最后我们等待所有线程执行完毕后退出程序。
当然,实际的线程池可能需要更复杂的任务调度和管理策略,比如任务队列、线程的动态创建和销毁等。可以根据具体的需求和场景来设计和实现更加高效的线程池。