Sobes.tech
Junior — Middle

Какви техники за обработка на паралелни задачи са реализирани в езика Go?

sobes.tech AI

Отговор от AI

В Go са реализирани следните техники за обработка на паралелни задачи:

  • Goroutines — леки нишки, които се стартират с ключовата дума go. Позволяват изпълнението на функции паралелно.

  • Канали (channels) — механизъм за комуникация между goroutine-ите, който позволява пренасяне на данни и синхронизиране на изпълнението.

  • Селектори (select) — конструкция за очакване на няколко операции с канали, позволяваща обработка на данни от няколко източника.

  • Пакет sync — съдържа примитиви за синхронизация като Mutex, WaitGroup, Once, които помагат за управлението на достъпа до споделени ресурси и координират приключването на goroutine-ите.

Пример за стартиране на goroutine и предаване на данни чрез канал:

package main
import (
    "fmt"
)
func worker(ch chan string) {
    ch <- "готово"
}
func main() {
    ch := make(chan string)
    go worker(ch)
    msg := <-ch
    fmt.Println(msg) // изход: готово
}