【问题标题】:Initialise thread pool初始化线程池
【发布时间】:2015-06-14 08:44:02
【问题描述】:

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

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

【问题讨论】:

  • 省略“池”部分并专注于不同的问题:如何将作业传递给线程或如何在线程中等待作业。这也称为生产者-消费者设置。如果你有这个运行,你可以乘以它以获得一个线程池。

标签: c multithreading pthreads


【解决方案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);

【讨论】:

    猜你喜欢
    • 2017-04-29
    • 2021-06-17
    • 2020-12-13
    • 2017-07-30
    • 2011-11-17
    • 1970-01-01
    • 2012-10-22
    • 2018-12-11
    • 2018-04-25
    相关资源
    最近更新 更多