Junior — Middle
Какви видове реализиране на паралелни задачи познавате?
sobes.tech AI
Отговор от AI
В Go паралелните задачи могат да бъдат реализирани по няколко начина:
-
Goroutines — леки нишки, които се стартират с ключовата дума
go. Позволяват изпълнението на функции паралелно. -
Канали — използват се за комуникация и синхронизация между goroutines, позволявайки безопасен пренос на данни.
-
Работни пулове — група от goroutines, които вземат задачи от опашка и ги обработват, помагайки за контролиране на броя на едновременно работещите goroutines.
-
sync.WaitGroup — за изчакване завършването на група goroutines.
Пример за стартиране на goroutine и пренос на данни чрез канал:
ch := make(chan int)
// Стартиране на goroutine
go func() {
ch <- 42 // изпращане на стойност към канала
}()
// Получаване на стойност от канала
val := <-ch
fmt.Println(val)