Выбор ответа Senior context обновлено
context.AfterFunc
Вопрос
Что делает stop := context.AfterFunc(ctx, f) (Go 1.21)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: После отмены ctx запускает f в своей горутине; stop снимает. AfterFunc регистрирует колбэк на отмену: когда ctx отменён, f запускается в своей горутине.
Варианты ответа
- Вызывает f через заданное время, как time.AfterFunc
- После отмены ctx запускает f в своей горутине; stop снимаетправильный ответ
- Отменяет ctx после того, как f завершится, и возвращает stop
- Вызывает f синхронно в момент отмены в горутине, которая отменила ctx
Разбор
AfterFunc регистрирует колбэк на отмену: когда ctx отменён, f запускается в своей горутине. Вызов stop() возвращает true, если удалось отвязать f до запуска. Удобно, чтобы прервать операцию, которая сама context не понимает, например закрыть соединение или разбудить sync.Cond. Таймеров и обратной отмены ctx здесь нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.