Выбор ответа Junior context спрашивают часто обновлено

Распространение отмены context

Вопрос

Есть parent и child := context.WithCancel(parent). Что верно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Отмена parent отменяет child, обратно не работает. Контексты образуют дерево, отмена идёт сверху вниз: отменили родителя, закрылись Done всех потомков.

Варианты ответа

  1. Отмена child отменяет и parent, и всех его потомков
  2. Отмены независимы: каждый контекст отменяется только сам
  3. Отмена parent отменяет child, обратно не работаетправильный ответ
  4. parent нельзя отменить, пока жив хотя бы один child

Разбор

Контексты образуют дерево, отмена идёт сверху вниз: отменили родителя, закрылись Done всех потомков. Потомок отменяется сам по себе, не влияя на родителя и соседей. Поэтому для подзадачи заводят свой WithCancel или WithTimeout.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.