Sobes.tech
Back to questions
Junior — Middle
86

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

Companies where asked
kode.ru
Самокат Тех

Answer from AI

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.