作为硬件作业的一部分,我将使用 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/