D>>1-й поток — выгребаитель данных. Берет данные и необработанными закидывает в очередь обработки. Тоесть сделать работу по быстому. D>>2-й поток — выгребает необработанные данные и раздает их, посредством пула потоков, свободным потокам для обработки. А>В таком случае всю работу будет тормозить один поток так как необработанные данные отдаются очень медленно, мегабайты в час, а программа должна обрабатывать гигабайты и 10 ки гигабайтов в час. но если многопоточно брать данные то получается, не спрашивайте почему оссобености места откуда берутся данные, что на каждый поток мегабайты в час ... соответсвенно.. чем больше потоков тем больше скорость. Это фактически проверенно неоднократно
Вы, случайно, не по сети данные получаете, а то по описанию очень похоже — в этом случае лучше использовать асинхронный ввод-вывод с помощью select() (в UNIX'е так, в Windows должно быть что-то похожее). В этом случае получать данные у вас будет один поток, но сразу по нескольким соединениям.