Распространенное заблуждение заключается в ваших словах: «вызовите ветку». Вы не можете "вызвать" поток. Это не функция. Это просто концепция планирования работы. Вы можете создать поток и выполнить задачу в среде потока.
К запуску потока, предоставляется указатель на функцию и набор аргументов для выполнения в потоке. Создание потоков довольно эффективно и хорошо подходит для многих поточных реализаций. Это самый простой способ обработки потоков. Итак, я предлагаю вам использовать его.
То, что вы хотели, это создать пул потоков постоянного размера. В этом случае каждый поток должен запустить задание, которое зацикливается в ожидании готовности данных. Распространенным способом является проверка события с помощью условной переменной std :: condition_variable в c ++ 11. Когда ввод готов, основной поток сигнализирует переменную, и поток может читать данные. Нет никакого способа узнать, какой поток пробуждается, когда кто-то сигнализирует переменную. Таким образом, вы должны убедиться, что входы правильно распределены между потоками. Итак, это более сложный метод, который в основном используется для управления ресурсами и может обеспечить некоторое повышение производительности в системах с большим количеством коротких задач.
В любом случае, будьте осторожны, как бы вы использовали результат. Возможно, вам придется синхронизировать их, используя мьютексы или другие методы.