Назад к вопросам
Junior — Middle
84
Каким образом реализована параллельная и последовательная обработка задач в языке Go?
Компании, где спрашивали
kode.ru
Самокат Тех
Ответ от нейросети
sobes.tech AI
В Go параллельная обработка задач реализуется с помощью горутин (goroutines) — легковесных потоков, которые запускаются с помощью ключевого слова go. Горутину можно запустить для выполнения функции асинхронно, и она будет выполняться параллельно с другими горутинами.
Последовательная обработка — это обычный вызов функций без использования go, когда задачи выполняются одна за другой.
Пример параллельной обработки:
package main
import (
"fmt"
"time"
)
func task(id int) {
fmt.Printf("Task %d started\n", id)
time.Sleep(time.Second)
fmt.Printf("Task %d finished\n", id)
}
func main() {
for i := 1; i <= 3; i++ {
go task(i) // запускаем горутину
}
time.Sleep(2 * time.Second) // ждем завершения горутин
}
В этом примере три задачи запускаются параллельно. Если убрать go, задачи выполнятся последовательно.
Для синхронизации и управления горутинами часто используют каналы (channels) и sync.WaitGroup.