Sobes.tech
Senior

Маънои истифодаи контекст чист? Чӣ гуна дар амал истифода шуд?

sobes.tech AI

Ҷавоб аз AI

Дар Go, context истифода мешавад барои интиқоли сигнали бекор кардан, маҳдудиятҳои вақт ва арзишҳои дигар байни goroutines, махсусан вақте ки бо дархостҳо, вақтҳои охир ва бекор кардани амалҳо кор мекунед.

Барномаи амалии:

  • Бекор кардани амалҳои дароз дар баста шудани дархости HTTP.
  • интиқоли маҳдудияти вақт, то амал аз вақти муайяншуда дарозтар наравад.
  • интиқоли метадатаҳо (масалан, идентификаторҳои дархостҳо) тавассути занҷираи занҷир.

Маслиҳати истифода:

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

func main() {
    ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    handler(ctx)
}

Ин ҷо, амали пас аз 2 сония қатъ мешавад, ҳатто агар барои 5 сония нақша гирифта шуда бошад.