Sobes.tech
Middle+

Какво е асинхронност, паралелност и конкурентност в контекста на Go?

sobes.tech AI

Отговор от AI

В контекста на Go:

  • Асинхронност — изпълнение на операции без блокиране на основния поток, обикновено чрез горутини и канали. Позволява стартирането на задачи, които могат да се изпълняват независимо и без да чакат тяхното завършване.

  • Паралелност — едновременна изпълнение на няколко задачи на различни ядра на процесора. В Go това се постига чрез планировчика на горутините, който ги разпределя по системните нишки.

  • Конкурентност — способността на програма да управлява множество задачи, които могат да се изпълняват едновременно или последователно, осигурявайки правилен достъп до споделените ресурси.

Пример за горутина:

func worker(id int) {
    fmt.Printf("Работник %d започна\n", id)
    // работа
}

func main() {
    for i := 1; i <= 5; i++ {
        go worker(i) // асинхронно стартиране
    }
    time.Sleep(time.Second) // изчакване за завършване
}