Sobes.tech
Junior — Middle

Обяснете концепцията за конкуренция в езика за програмиране Go и ролята й в разработването на паралелни приложения

sobes.tech AI

Отговор от AI

В Go конкуренцията (concurrency) е способността на програма да изпълнява няколко задачи едновременно, ефективно използвайки ресурсите на процесора. В езика Go това се постига чрез горутините, които са леки нишки, стартирани с ключовата дума go.

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

За синхронизация и обмен на данни между горутините се използват канали (channels), които осигуряват безопасна комуникация без явни блокировки.

Пример:

package main
import (
    "fmt"
    "time"
)

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

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

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