Создание новой темы и ее частое уничтожение - не очень хорошая идея. Во-первых, у вас должен быть способ связать это так, чтобы он не занимал слишком много памяти (например, подумайте о стековом пространстве), или дойти до точки, где происходит много упреждений, потому что потоки конкурируют за время на процессор. Во-вторых, вы потратите много времени на создание новых потоков и их разрушение. (Это зависит от вашей операционной системы. Некоторые ОС могут создавать дешевые потоки, а другие могут быть дорогими.)
Звучит так, как будто вы хотите реализовать рабочую очередь. Я не смог найти хорошую статью в Википедии по этому вопросу, но это близко: Шаблон пула потоков .
Можно часами говорить о том, как реализовать это, и о различных алгоритмах параллельной очереди, которые можно использовать. Но идея в том, что вы создаете N потоков, которые истощают очередь, и выполняете некоторую работу в ответ на поставленные в очередь элементы. Как правило, вы также хотите, чтобы потоки, скажем, ожидали семафор , пока в очереди нет элементов - рабочие потоки уменьшают этот семафор, а перехватчик увеличивает его. Чтобы запретить слишком много очереди в очереди, когда рабочие потоки заняты и, следовательно, занимают слишком много ресурсов, вы также можете попросить их подождать семафор «число доступных слотов очереди», который уменьшается в очереди и увеличивается с увеличением рабочего потока. Это всего лишь примеры, детали до вас. Вам также понадобится способ указать потокам прекратить ожидание работы.