Как запустить два воркера так, чтобы они выполнялись параллельно и оба завершились примерно за 3 секунды?

В Go для параллельного выполнения функций можно использовать горутины.

Короткий ответ

Что ответить на собеседовании

В Go для параллельного выполнения функций можно использовать горутины. Если у вас есть две функции worker(), которые сейчас выполняются последовательно и суммарно занимают 6 секунд, то запустив их в отдельных горутинах, они будут выполняться параллельно, и общее время уменьшится примерно до 3 секунд.

Подробный разбор

Ответ с пояснениями

В 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 позволяет выполнять их параллельно.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее