Sobes.tech
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)