Я бы начал с проблемы и только потом пытался найти для нее решение.
Если вы начнете так, как у вас есть, у вас может быть решение, ищущее проблему, которую нужно решить, и вы, вероятно, будете использовать его ненадлежащим образом.
Если вы не можете придумать, как использовать пулы потоков, не используйте их. ;)
Распространенная ошибка, которую совершают люди, состоит в том, что они предполагают, что, поскольку у них сейчас много процессоров, они должны использовать их все, как если бы это было само по себе причиной. Это все равно, что сказать, что у меня много места на диске, и я должен найти способ использовать его все.
Хорошей причиной для использования пулов потоков является повышение производительности процессов, связанных с ЦП, и простота процессов, связанных с вводом-выводом (вместо использования неблокирующего ввода-вывода с одним потоком).
Если у вас есть процесс, связанный с загруженным процессором, который выполняет задачи, которые могут выполняться независимо, у вас есть хороший вариант использования пула потоков.
Примечание. Пул потоков часто имеет только один поток. Для них существуют специальные статические фабрики. Если вам нужен простой фоновый рабочий, это может быть вариантом.
Примечание 2. Распространенной ошибкой является предположение, что задачи, привязанные к ЦП, будут лучше всего выполняться на сотнях или тысячах потоков. Оптимальное количество потоков может быть количеством ядер или процессоров, которые у вас есть. Как только все они будут заняты, вы можете обнаружить, что дополнительные потоки просто добавляют накладные расходы.
person
Peter Lawrey
schedule
15.03.2012