Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Реализация пула потоков

Автор вопроса: FourOfAKindОтветов: 1

Мне нужно реализовать пул потоков с помощью pthreads. Я не мог двигаться вперед. Я нашел аналогичный вопрос здесь Но это все еще не уточняет мой вопрос. Мой вопрос: как только поток завершится, могу ли я использовать его снова? Другой способ задать этот вопрос: как поток возвращается в свой пул потоков после выполнения задачи до ее завершения. Может ли кто-нибудь указать мне на какую-нибудь простую статью о пуле pthread? Мое замешательство возникает в основном из-за того, что у меня немного опыта работы с Java. Я где-то читал, что мы не можем вызывать start() в потоке во второй раз после его завершения.

  • См. также stackoverflow.com/questions/3561095/ и software.intel.com/en-us/forums/showthread.php?t=53220 derobert 30.09.2011

cthreadpool

Ответы

Ответ 1 · рейтинг 7 · cnicutar

Мой вопрос: как только поток завершится, могу ли я использовать его снова?

Да, это цель пула - повторно использовать потоки, а не уничтожать их.

Как поток возвращается в свой пул потоков.

Пытаясь получить другой элемент из очереди. Выполнение этого в цикле - один из способов.

Вот что делает каждый поток в моей реализации (это фактическая функция, используемая с pthread_create):

static void *
_tp_worker(void *arg)
{
    /* ... */

    /* Wait until tasks is available. */
    while (!queue_get(pool->pend_q, &t_ptr)) {
        /* And then execute it. */
    }
}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы