Sobes.tech
Junior — Middle

Co się dzieje, jeśli wykonasz zapis do kanału, którego bufor jest w pełni zapełniony?

sobes.tech AI

Odpowiedź od AI

W Go, jeśli próbujesz zapisać wartość do kanału z buforem, który jest w pełni zapełniony, operacja zapisu zostanie zablokowana, dopóki w kanale nie zwolni się miejsce (czyli dopóki ktoś nie odczyta z kanału). Zapewnia to synchronizację między gorutynami i zapobiega utracie danych.

Przykład:

ch := make(chan int, 2) // bufor na 2 elementy
ch <- 1
ch <- 2
// ch <- 3 // tutaj zapis zostanie zablokowany, dopóki ktoś nie odczyta z ch