Junior — Middle
Za jakých podmínek dochází k blokování při použití vyrovnávacího kanálu v systému přenosu dat?
sobes.tech AI
Odpověď od AI
V Go je blokován bufferovaný kanál ve dvou hlavních případech:
-
Při zápisu (odeslání) do kanálu: pokud je buffer kanálu plný (tedy počet prvků v kanálu dosáhl jeho kapacity), pokus o odeslání nového hodnoty blokuje goroutine, dokud někdo ne přečte z kanálu a neuvolní místo.
-
Při čtení z kanálu: pokud je kanál prázdný (žádné prvky ke čtení), pokus o čtení z kanálu blokuje goroutine, dokud někdo ne odešle novou hodnotu.
Tímto způsobem dochází k blokování při pokusu o odeslání dat do plného bufferu nebo při pokusu o čtení z prázdného bufferu.