Sobes.tech
Junior — Middle

Горутина контекст аркылуу анын иштөөсү токтотулганын кантип тааныйт?

sobes.tech AI

AIден жооп

Go'да goroutine тоқтатылуын context (context.Context) арқылы Done()` арнасы көмегімен таниды, ол тоқтатылған кезде жабылады.

Тоқтатумен контекст (context.WithCancel немесе context.WithTimeout) жасалған кезде, goroutine ctx.Done() арнасын тыңдай алады:

ctx, cancel := context.WithCancel(context.Background())

// Goroutine'ду ишке киргизүү
go func() {
    select {
    case <-ctx.Done():
        // Контекст токтотулду, ишти аяктоо керек
        fmt.Println("Goroutine токтотулду")
        return
    default:
        // Негизги ишти аткарыңыз
    }
}()

// Контекстти токтотуу
cancel()

Ушул жол менен, goroutine токтотуу жөнүндө Done() арнасын текшерип, туура ишин аяктай алат.