Sobes.tech
Middle

Go-догу контекст деген эмне? Эмне үчүн колдонулат? Убакыттын өтүшү менен болтурбоо кантип иштейт?

sobes.tech AI

AIден жооп

Go'да, context — бул пакет жана концепция иш-аракеттердин жашоо мөөнөтүн башкаруу, жокко чыгаруу белгилерин өткөрүү жана горутиндер арасында убакыт чектерин белгилөө үчүн.

Контексттин негизги милдеттери:

  • Иш-аракеттерди жокко чыгарыш (мисалы, убакыттын өтүшү же колдонуучу тарабынан жокко чыгаруу),
  • Баалуулуктарды өткөрүү (мисалы, суроо ID) чакыруу чынжырында,
  • Убакыт чектерин (тайм-ауттарды) орнотуу.

Убакыттын өтүшү менен жокко чыгаруу мындай иштейт:

  1. context.WithTimeout сыяктуу, убакыт чеги же тайм-аут менен контекст түзүлөт.
  2. Убакыт өтүп кеткенде, контекст автоматтык түрдө жокко чыгарыла тургандай болот.
  3. Бул контекстти угуп жаткан горутин Done() каналы аркылуу жокко чыгаруу белгилерин алат.
  4. Горутин туура иштетип, жокко чыгарууну иштетиши керек (мисалы, ишти токтотуп, ресурстарды бошотуу).

Мисал:

ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()

select {
case <-time.After(3 * time.Second):
    fmt.Println("операция аяктады")
case <-ctx.Done():
    fmt.Println("операция жокко чыгарылды же убакыт аяктады")
}

Бул операция 2 секунддан кийин токтотулат, эгер ал эрте аяктабаса.