Некоторые вещи, которые нужно прояснить: оба ваших примера используют один sync.WaitGroup
, основное отличие заключается в «распределении» работы по функциям .
In В первом примере у вас есть 2 одновременных программы, выполняющих 2 разные работы (задачи), в то время как во 2 примере у вас есть 1 отдельная программа, выполняющая обе задачи последовательно, одна за другой.
Основным преимуществом может быть что эти 2 подпрограммы могут быть запланированы для запуска в 2 потоках ОС, которые могут использовать 2 отдельных ядра ЦП, поэтому они могут завершиться раньше / раньше. Завершится ли это раньше и насколько зависит от реальных задач.
Эти 2 задачи могут даже зависеть друг от друга, поэтому может случиться так, что если вы поместите их в одну программу они никогда не завершатся.