Могу ли я сохранить потоки живыми и дать им другие рабочие нагрузки? - PullRequest
2 голосов
/ 22 октября 2011

Предположим, я создаю потоки с pthreads, возможно ли отправить им новые вещи для работы на после их инициализации, чтобы я не тратил ресурсы на создание новых потоков?Например, я создаю 3 потока, поток 2 завершает сигналы и отправляю ему еще одну «задачу», не убивая ее и не запуская новую.Спасибо.

Ответы [ 4 ]

5 голосов
/ 22 октября 2011

Обычная, простая форма - это обычная (рабочая) очередь .В принципе, вы поддерживаете структуру очереди, возможно, в виде связанного списка, защищенного мьютексом.Как правило, условные переменные используются потоками основного / продюсера для уведомления рабочих потоков о доступности новой работы, поэтому им не нужно опрашивать.

Некоторые предыдущие вопросы SO, которые могут такжеполезно:

3 голосов
/ 22 октября 2011

Да, и именно это делают серверы, такие как Apache, чтобы повысить свою производительность.Шаблон дизайна называется Шаблон пула потоков , и существуют различные реализации (например, эта ) с использованием pthreads.

Конечно, вы можете оставить свойреализация максимально проста, в зависимости от ваших целей.

0 голосов
/ 22 октября 2011

Поисковое ключевое слово для вашего вопроса "пул потоков" или "пул потоков".Используя эти условия, вы найдете много информации на этом сайте, а также в Google.

0 голосов
/ 22 октября 2011

Конечно. Например, вы можете использовать шаблон производитель-потребитель. Вот пример в C # , но он также может быть легко реализован в pthreads.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...