Хотя ваш вопрос не очень конкретный c, это то, что я считаю лучшим ответом на него:
В многопоточной программе есть один процесс, который имеет несколько потоков. Все эти потоки имеют свой собственный стек, но все остальное разделяет. Другими словами, если у вас есть (например) глобальная переменная, изменение ее в одном потоке изменит ее для всех других потоков. Это форма связи между разными потоками одного и того же процесса.
Когда у вас есть родительский процесс и дочерний процесс, у вас есть два разных процесса, которые ничего не разделяют (ну, дочерний процесс зависит от родитель останется в живых, но это совсем другой разговор). Поскольку вы не можете напрямую изменять переменные другого процесса (как вы могли бы сделать с глобальной переменной ранее), для отправки данных от одного процесса к другому вам потребуется использовать другие методы, наиболее распространенными из которых являются каналы. Вы можете думать о каналах так же, как и о файлах: когда вы хотите отправить данные другому процессу, вы записываете данные в канал; когда вы хотите получить полученные данные от другого процесса, вы читаете данные из канала.
Вот ссылка с примерами работы каналов: https://www.geeksforgeeks.org/c-program-demonstrate-fork-and-pipe/ Вот ссылка с примерами того, как доступ к одним и тем же глобальным переменным в разных потоках работает: https://www.geeksforgeeks.org/multithreading-c-2/
Рад попытаться прояснить это, если у вас есть дополнительные вопросы / если это не отвечает на ваш вопрос
Изменить: для решения части «синхронизации»: в многопоточной программе вы можете использовать такие структуры, как мьютексы или барьеры, которые используются как глобальная переменная и легко доступны для всех потоков в вашем процессе. В многопроцессорной программе вам потребуется синхронизация, используя очень похожие методы, которые построены как слой абстракции над системой межпроцессного взаимодействия, о которой я говорил выше. Примером такого уровня абстракции является то, как MPI выполняет синхронизацию: https://mpitutorial.com/tutorials/mpi-broadcast-and-collective-communication/ Конечно, вы можете реализовать свои собственные функции по каналам.