Back to questions
Senior
7
Как сделать выполнение двух worker() параллельным вместо последовательного (6 секунд → 3 секунды)?
Companies where asked
Магнит Тех
Answer from AI
sobes.tech AI
В Go для параллельного выполнения функций можно использовать горутины. Если у вас есть две функции worker(), которые сейчас выполняются последовательно и суммарно занимают 6 секунд, то запустив их в отдельных горутинах, они будут выполняться параллельно, и общее время уменьшится примерно до 3 секунд.
Пример:
go func() {
worker()
}()
go func() {
worker()
}()
// Чтобы дождаться завершения обеих горутин, используйте sync.WaitGroup
var wg sync.WaitGroup
wg.Add(2)
go func() {
defer wg.Done()
worker()
}()
go func() {
defer wg.Done()
worker()
}()
wg.Wait()
Таким образом, запуск функций в горутинах и синхронизация через WaitGroup позволяет выполнять их параллельно.