Если только проблема, которую вам нужно решить, не требует специальных вычислений, я бы выбрал язык программирования, наиболее подходящий для решения моей реальной проблемы.
Распределение потоков между процессорами обычно лучше оставить операционной системе. Вы можете влиять на это распределение, используя различные приоритеты потоков.
Если вы используете язык со средой выполнения (java, .net), то у вас есть дополнительный слой потоков в среде выполнения по сравнению с собственными потоками.
Чтобы в полной мере использовать потенциал многопроцессорных систем, проблема, с которой вы сталкиваетесь, должна представлять собой проблему, связанную с многопроцессорностью. В форме многопоточного ввода данных нет реального применения.
НТН
Mario