c - 初始化线程池

标签 c multithreading pthreads

作为硬件作业的一部分,我将使用 pthread 在 ANSI C 中实现一个线程池。

我很难理解如何初始化我的线程池。我认为这个想法是用线程初始化池,该线程会休眠直到它们有工作要做,但是我不确定如何实现这一点。

最佳答案

创建一个作业队列(这可以像链接列表一样简单),由互斥锁保护。将此与当作业添加到队列时发出广播信号的条件变量配对。然后,线程可以使用如下代码等待作业:

pthread_mutex_lock(&queue_lock);
while (queue_is_empty)
    pthread_cond_wait(&queue_cond, &queue_lock);
job = pop_from_queue();
pthread_mutex_unlock(&queue_lock);

关于c - 初始化线程池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30827464/

相关文章:

c++ - g++ 链接器抛出对 xxxx 的 undefined reference

c - 在 C 中使用 Fortran 函数会导致启动时出现段错误

c++ - pthread_mutex_lock.c :62: __pthread_mutex_lock: Assertion `mutex->__data.__owner == 0' failed

c++ - pthreads 中的内存模型规范

c++ - SCHED_RR 线程上的 Posix 计时器正在使用 100% CPU

c - 在 Unix 上执行共享库

c - do-while循环不断重复

使用多线程时计算执行时间

multithreading - 通过对银行建模来理解参与者模型

Java线程池内存泄漏