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