Вы должны определить структуру с двумя полями, одно для вашего глобального и одно для семафора.Затем, прежде чем произойдет какое-либо разветвление, создайте некоторую общую память в родительском процессе, достаточно большую, чтобы сохранить эту структуру и инициализировать ее там.В дочерних картах в общей памяти, чтобы они могли получить доступ к глобальной.Все процессы, родительские и дочерние, должны соблюдать правила семафора при доступе к глобальному.
Чтобы избежать ненужной блокировки, которая может снизить производительность, старайтесь не держать семафор слишком долго.Когда вы читаете глобальный объект, быстро сделайте его копию в процессе и используйте его, а не удерживайте семафор в течение всего времени, когда вы используете его значение.Аналогичным образом, при изменении глобального объекта, подготовьте свои изменения заранее (перед тем, как захватить семафор) и, как только у вас появится семафор, скопируйте их сразу.Иногда ваша работа зависит от чтения и написания глобального без изменения между чтением и написанием.В этом случае некоторая блокировка может быть неизбежной.
Непонятно, на какой платформе вы находитесь, но все основные платформы для ПК и серверов (Windows, Linux / Unix / Mac OS) поддерживают совместную память и семафоры.,API-интерфейсы могут быть разными, но необходимые вам функции есть.