Sobes.tech
Junior — Middle

Mi történik a rendszer vagy program belsejében, amikor a puffer teljesen megtelik, és hogyan vezethet ez lefagyáshoz?

sobes.tech MI

Válasz az MI-től

Amikor a Go programban a puffer teljesen megtelik, a rá következő írás blokkolódik, amíg az adatokat ki nem olvassák a pufferről. Ez annak köszönhető, hogy a puffer mérete korlátozott.

Ha az adatgyártó (writer) tovább próbál írni a teljes pufferbe, és a fogyasztó (reader) nem olvassa az adatokat, akkor a gyártó goroutine-ja blokkolódik. Ha emellett a fogyasztó is vár a gyártóra (például kölcsönös zárolás miatt), akkor kialakul egy kölcsönös zárolási helyzet (deadlock), ami a program lefagyásához vezet.

Példa: egy 2-es méretű puffert tartalmazó csatorna, amelybe az adatok gyorsabban íródnak, mint ahogy olvassák őket.