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.