Sobes.tech
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:

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

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