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 опростява конкурентното програмиране, скривайки сложността на нишките и синхронизацията.