Junior — Middle
Jakie techniki przetwarzania równoległego są zaimplementowane w języku Go?
sobes.tech AI
Odpowiedź od AI
W języku Go zaimplementowane są następujące techniki obsługi zadań równoległych:
-
Goroutines — lekkie wątki uruchamiane za pomocą słowa kluczowego
go. Pozwalają na wykonywanie funkcji równolegle. -
Kanały — mechanizm komunikacji między goroutines, umożliwiający przesyłanie danych i synchronizację wykonania.
-
Selektory (select) — konstrukcja do oczekiwania na wiele operacji na kanałach, pozwalająca na obsługę danych z różnych źródeł.
-
Pakiet sync — zawiera prymitywy synchronizacji, takie jak
Mutex,WaitGroup,Once, które pomagają zarządzać dostępem do wspólnych zasobów i koordynować zakończenie goroutines.
Przykład uruchomienia goroutine i przesłania danych przez kanał:
package main
import (
"fmt"
)
func worker(ch chan string) {
ch <- "gotowe"
}
func main() {
ch := make(chan string)
go worker(ch)
msg := <-ch
fmt.Println(msg) // wyjście: gotowe
}