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ą.