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) // изход: готово
}