Sobes.tech
Junior — Middle

Как горутината разбира, че й е изпратен сигнал за завършване чрез контекста?

sobes.tech AI

Отговор от AI

Горутината получава сигнал за завършване чрез контекст с помощта на канал, който предоставя обекта context.Context. Обикновено се използва методът Done(), който връща канал, който се затваря при отменяне на контекста. Горутината може да слуша този канал в цикъл или select и да реагира на неговото затваряне, което означава сигнал за завършване или отменяне на операцията.

Пример:

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

go func() {
    select {
    case <-ctx.Done():
        // Контекстът е отменен, приключваме
        fmt.Println("Горутината е завършена")
        return
    // други случаи
    }
}()

// по-късно извикваме cancel(), за да сигнализираме за завършване
cancel()