Sobes.tech
Junior — Middle

Мақсади истифодаи контекстерҳои кӯдакон дар система чист?

sobes.tech AI

Ҷавоб аз AI

Дар Go, контекстҳои кӯдак (child contexts) аз контекстҳои падар (parent contexts) бо истифода аз функсияҳои context.WithCancel, context.WithTimeout ё context.WithDeadline эҷод мешаванд. Ҳадафи истифодаи контекстҳои кӯдак:

  • Идоракунии вақти зиндагии амалиётҳо: контексти кӯдак метавонад мустақилона бекор карда шавад, ки ин имкон медиҳад назорат бар иҷрои вазифаҳои муайян.
  • Тасиррасонии сигнали бекор кардан: агар контексти падар бекор карда шавад, ҳамаи контекстҳои кӯдак низ бекор мешаванд, ки ин ба анҷоми пайдарпайи амалиётҳои алоқаманд кӯмак мекунад.
  • Илова кардани маҳдудиятҳо: масалан, муайян кардани мӯҳлати тамомшавӣ ё таърихи охир барои контексти кӯдак бе тағир додани контексти падар.

Масалан:

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// ctx — контексти кӯдак бо мӯҳлати 5 сония

go func(ctx context.Context) {
    select {
    case <-time.After(10 * time.Second):
        fmt.Println("Амалиёт анҷом ёфт")
    case <-ctx.Done():
        fmt.Println("Амалиёт бекор ё тамом шуд")
    }
}(ctx)

// cancel() метавонад барои бекор кардани дастӣ контексти кӯдак истифода шавад

Ин тариқ, контекстҳои кӯдак имкон медиҳанд, ки муддати зиндагӣ ва бекоркунии амалиётҳоро дар як сохтори дарахтӣ бофтану идора кардан флексибл бошанд.