Sobes.tech
Middle+

Czym są asynchroniczność, równoległość i konkurencyjność w kontekście Go?

sobes.tech AI

Odpowiedź od AI

W kontekście Go:

  • Asynchroniczność — wykonywanie operacji bez blokowania głównego wątku, zazwyczaj za pomocą gorutyn i kanałów. Pozwala na uruchamianie zadań, które mogą być wykonywane niezależnie i nie muszą czekać na ich zakończenie.

  • Równoległość — jednoczesne wykonywanie wielu zadań na różnych rdzeniach procesora. W Go osiąga się to dzięki planistowi gorutyn, który rozdziela je na wątki systemowe.

  • Współbieżność — zdolność programu do zarządzania wieloma zadaniami, które mogą być wykonywane jednocześnie lub kolejno, zapewniając poprawny dostęp do zasobów współdzielonych.

Przykład gorutyny:

func worker(id int) {
    fmt.Printf("Pracownik %d rozpoczął\n", id)
    // praca
}

func main() {
    for i := 1; i <= 5; i++ {
        go worker(i) // asynchroniczne uruchomienie
    }
    time.Sleep(time.Second) // oczekiwanie na zakończenie
}