作为硬件分配的一部分,我即将使用pthreads在ANSI C中实现一个线程池。
我很难理解如何初始化我的线程池。我认为这个想法是使用线程初始化池,直到他们找到工作为止,但是我不知道如何实现它。
答案 0 :(得分:1)
创建一个作业队列(这可能像链表一样简单),受互斥锁保护。将此配对与作业添加到队列时广播信号的条件变量相对应。然后,线程可以使用以下代码等待作业:
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);