初始化线程池
Initialise thread pool
作为硬件作业的一部分,我将使用 pthreads 在 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);
作为硬件作业的一部分,我将使用 pthreads 在 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);