Параллелизм не происходит в вакууме. Координация запускаемых вами программ может потребоваться по многим причинам. В этом случае есть один основной (за исключением примера, который придуман как демонстрация):
Среда выполнения Go завершится, если достигнут конец метода main
. В этот момент работающая программа, включая все другие программы, будет прервана. Координация здесь гарантирует, что детская программа была приостановлена до того, как программе позволили выйти.
Я писал о примере этого вчера: https://stackoverflow.com/a/52347990/1113760.
Вы можете представить себе множество других причин, требующих координации между параллельной работой (этот список не относится к Go и не является исчерпывающим):
Функции работают в области общей памяти, поэтому требуется координация в форме взаимного исключения, чтобы гарантировать, что только одна подпрограмма получает доступ к критическому разделу за один раз.
Ваша дальнейшая обработка может зависеть от вывода нескольких программ, поэтому вы ожидаете консенсуса, прежде чем продолжить.
Ваша программа может предоставлять услугу, и вы хотите убедиться, что любые запросы в полете (обработанные в отдельных процедурах) были завершены и истощены перед завершением работы.
Этот вопрос выходит за рамки вопроса о рассмотрении трудностей информатики, связанных с одновременным исполнением, и примеров, в которых это полезно, поэтому в литературе будут представлены дополнительные подробности и примеры.