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