Прежде всего, вы должны понимать, что в Windows встроен не один, а два API пула потоков. В случае, если этого недостаточно, порты завершения ввода-вывода также являются в основном пулами потоков. маскировка. Таким образом, , вероятно, не так уж много причин для написания собственного пула потоков.
Если вы не планируете запускать потоки на разных компьютерах, я бы не использовал сокеты для связи. Обычное намерение с потоками состоит в том, чтобы они сводили накладные расходы к минимуму; сокеты не очень хорошо подходят для этого. Если вы пересекаете границы компьютера, гораздо больше накладных расходов (сетевое взаимодействие) становится почти неизбежным, и в этом случае использование сокетов вместо какого-либо другого сетевого API не имеет большого значения. Также обратите внимание, что для работы на нескольких машинах вам нужно сделать немного больше в общем, сортировать данные из одного в другой и т. Д.
Предполагая, что вы придерживаетесь одной машины, я бы использовал некий потокобезопасную очередь вместо сокета. Я опубликовал один в предыдущем ответе , который может оказаться полезным. Это включает в себя некоторый пример кода, который создает пул потоков для обслуживания задач в очереди.