Похоже, вы пытаетесь разрешить нескольким потокам изменять глобальные переменные без изменений друг друга, влияющих на другие потоки. В результате разветвления все пространство памяти вашего приложения в основном копируется, и каждая ветвь ветки имеет свои собственные переменные, и эти две ветви не могут обмениваться данными, кроме как через IPC.
Если вы хотите использовать boost :: thread, вам придется делать это самостоятельно, если вы не хотите, чтобы потоки влияли друг на друга, поскольку одинаковое пространство памяти является общим для всех потоков. Вы можете просто создать переменные, локальные для каждой функции потока.
Использование потоков вместо разветвления будет гораздо более гибким, особенно если вы хотите начать предоставлять потокам общий доступ к данным. Если вы хотите иметь переменные, которые могут быть изменены всеми потоками, они должны быть защищены мьютекс-блокировками при их изменении, чтобы только один поток мог изменять переменную одновременно.