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
}