Вы бы просто запустили поток в цикле. Он пытается взять единицу «работы» из очереди, выполняет работу и затем возвращается в очередь. Когда очередь пуста, она ждет.
Затем из другого потока вы можете вставить рабочие элементы в очередь, чтобы поток выполнял их.
Читая ваш вопрос еще раз, вы хотите сказать, что вы хотите, чтобы ваш главный поток уведомил рабочий поток о начале работы, но тогда главный поток должен немедленно начать ждать завершения рабочего процесса? Это будет означать, что одновременно работает только один поток. Там не было бы никакого смысла в этом. Потоки предназначены для одновременного выполнения.
Если предположить, что это не то, что вам нужно, то мне интересно, что может быть проще, чем простой рабочий поток, выполняющийся из очереди. Поток либо работает, либо ждет. Таким образом, вам нужна некоторая структура данных, которая обеспечивает связь между мастером и работником, чтобы работник мог ждать прибытия рабочего элемента, а мастер мог отправить рабочий элемент, который разбудит работника, а затем, когда рабочий элемент будет завершен , работник ждет другого.