初始化线程池

时间:2015-06-14 08:44:03

标签: c multithreading pthreads

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

我很难理解如何初始化我的线程池。我认为这个想法是使用线程初始化池,直到他们找到工作为止,但是我不知道如何实现它。

1 个答案:

答案 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);