Sobes.tech
Junior — Middle

Как е реализираният модел на конкуренция в езика Golang?

sobes.tech AI

Отговор от AI

В езика Go моделът за конкурентност се базира на горутините и каналите.

  • Горутини са леки нишки, които се стартират с ключовата дума go. Те позволяват изпълнението на функции паралелно без значителни разходи за ресурси.

  • Канали са типизирани канали за обмен на данни между горутините, осигуряващи синхронизация и безопасен обмен на информация.

Пример:

package main

import (
    "fmt"
    "time"
)

func worker(id int, ch chan string) {
    time.Sleep(time.Second)
    ch <- fmt.Sprintf("Работник %d завърши", id)
}

func main() {
    ch := make(chan string)
    for i := 1; i <= 3; i++ {
        go worker(i, ch)
    }

    for i := 1; i <= 3; i++ {
        msg := <-ch
        fmt.Println(msg)
    }
}

В този пример, трите горутини изпълняват работа паралелно и изпращат резултата към канал, от който главният поток ги чете.

По този начин, Go опростява конкурентното програмиране, скривайки сложността на нишките и синхронизацията.