Junior — Middle
Mi a célja az al-kontektszek használatának a rendszerben?
sobes.tech MI
Válasz az MI-től
Go nyelvben a gyermek-kontektszek (child contexts) a szülő-kontektszekből hozhatók létre a context.WithCancel, context.WithTimeout vagy context.WithDeadline függvények segítségével. A gyermek-kontektszek használatának célja:
- Az műveletek életidejének kezelése: a gyermek-kontektsz függetlenül a szülő-kontektsztől megszakítható, így lehetőség van bizonyos feladatok végrehajtásának ellenőrzésére.
- A megszakítási jelek továbbítása: ha a szülő-kontektsz megszakad, akkor az összes gyermek-kontektsz is megszakad, biztosítva a kapcsolódó műveletek lánc-szerű befejezését.
- Korlátozások hozzáadása: például időkorlát vagy határidő beállítása a gyermek-kontektsz számára anélkül, hogy a szülő-kontektszt módosítanánk.
Példa:
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// ctx — gyermek-kontektsz 5 másodperces időkorláttal
go func(ctx context.Context) {
select {
case <-time.After(10 * time.Second):
fmt.Println("Művelet befejeződött")
case <-ctx.Done():
fmt.Println("Művelet megszakadt vagy időtúllépés")
}
}(ctx)
// A cancel() manuálisan hívható a gyermek-kontektsz megszakítására
Így a gyermek-kontektszek rugalmasan kezelik a feladatok életidejét és megszakítását hierarchikus szerkezetben.