用CHAT写一简单的C语言线程池的示例
问CHAT:编写一个简单的C语言线程池的示例
CHAT回复:在C语言中,实现线程池需要手动创建线程和管理任务队列。以下是一个简单的C语言线程池的示例:
```c #include <pthread.h> #include <stdio.h> #define NUM_THREADS 5 #define WORK_SIZE 50 void *worker(void *work_id) { int w; w = (intptr_t)work_id; printf("Worker %d starting\n", w); return NULL; } int main(void) { pthread_t threads[NUM_THREADS]; int work[WORK_SIZE]; for(int i = 0; i < WORK_SIZE; ++i) { work[i] = i; } for(int i = 0; i < NUM_THREADS; ++i) { printf("In main: creating thread %d\n", i); pthread_create(&threads[i], NULL, worker, (void *)(intptr_t)i); } for(int i = 0; i < NUM_THREADS; ++i) { pthread_join(threads[i], NULL); } return 0; } ```
这个程序将提交`WORK_SIZE`个工具到线程池中,然后使用 `pthread_create`来创建`NUM_THREADS`个线程, 每个线程都由`worker`函数处理。每个线程被分配了一个`work_id`,然后执行任务。`pthread_join`等待所有线程完成。
这个示例非常简化,它忽略了在实践中需要考虑的许多问题,如如何管理任务队列,如何处理线程完成后的清理以及如何恰当地实现线程同步和通信等。
动动小手点个关注?注册?吧
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!