Пул потоков и множество отдельных потоков

Я нахожусь в середине проблемы, когда я не могу решить, какое решение принять.

Проблема немного уникальна. Скажем так, я постоянно получаю данные из сети (от 2 до 4 раз в секунду ). Теперь все данные принадлежат разным, скажем, группам. Теперь,давайте назовем эти группы, group1, group2 и так далее.

Каждая группа имеет выделенную очередь заданий, где данные из сети фильтруются и добавляются в соответствующую группу для обработки.

Сначала я создал выделенный поток для каждой группы, который будет брать данные из очереди заданий, обрабатывать их, а затем переходить в состояние блокировки (с помощью связанной очереди блокировки ).

Но мой старший посоветовал мне использовать пулы потоков, потому что таким образом потоки не блокируются и могут использоваться другими группами для обработки.

Но вот в чем дело, данные, которые я получаю, достаточно быстры, и время, необходимое потоку для их обработки, достаточно велико, чтобы поток, возможно, не перешел в режим блокировки. И это также гарантирует, что данные обрабатываются последовательно (задание 1 выполняется до задания 2 ), что при объединении, очень мало шансов, может не произойти.

Мой старший также считает, что объединение также сэкономит нам много памяти, потому что потоки ОБЪЕДИНЕНЫ (я думаю, что он действительно поверил слову;)). Хотя я с этим не согласен, потому что лично я считаю, что в пуле или нет каждый поток получает свою собственную стековую память. Если в пулах потоков нет чего-то, о чем я не знаю.

И последнее, я всегда думал, что объединение помогает там, где рабочие места появляются в большом количестве на короткое время. Это имеет смысл, потому что порождение потока приведет к снижению производительности, поскольку время, затрачиваемое на инициализацию потока, намного превышает время, затрачиваемое на выполнение работы. Так что объединение здесь очень помогает.

Но в моем случае group1, group2,...,groupN всегда остаются в живых. Так что, если есть данные или нет, они все равно будут там. Так что порождение потока здесь не проблема.

Мой старший не убежден и хочет, чтобы я выбрал решение для пула, потому что его объем памяти велик.

Итак, какой путь выбрать?

Спасибо.

8
задан h.i 28 July 2012 в 11:50
поделиться