«Оптимальное» решение во многом зависит от вашей конкретной установки. У вас есть один процесс с основным потоком и дочерним потоком или у вас есть один родительский процесс и дочерний процесс? Какую ОС и какую библиотеку потоков вы используете?
Причина последнего вопроса состоит в том, что текущий стандарт C ++ 03 не имеет понятия «нить». В частности, это означает, что любое решение, которое предлагает ваша ОС и библиотека потоков, зависит от платформы. Самые портативные решения будут скрывать эти особенности только от вас при реализации.
В частности, C ++ не имеет понятия о потоках в своей модели памяти и не имеет понятия атомарных операций, синхронизации, упорядоченного доступа к памяти, условий гонки и т. Д.
Однако есть вероятность, что любая используемая вами библиотека уже обеспечивает решение вашей проблемы на вашей платформе.