Sobes.tech
Junior — Middle

W jaki sposób odbywa się przesyłanie danych przez niebuforowany kanał komunikacyjny?

sobes.tech AI

Odpowiedź od AI

Przesyłanie danych przez niebuforowany kanał w Go odbywa się synchronicznie: nadawca blokuje się, dopóki odbiorca nie odczyta danych, i odwrotnie. Zapewnia to bezpośrednią synchronizację między goroutines.

Przykład:

ch := make(chan int) // niebuforowany kanał

// Nadawca
go func() {
    ch <- 42 // blokuje się, dopóki odbiorca nie odczyta
}()

// Odbiorca
val := <-ch // blokuje się, dopóki nie pojawi się wartość
fmt.Println(val) // wyświetli 42

W ten sposób dane są przesyłane bezpośrednio, bez pośredniego przechowywania, co gwarantuje synchronizację między nadawcą a odbiorcą.