Предположим, у меня есть такие функции:
func A(ctx context.Context) {
// A takes some time to process
}
func B(ctx context.Context) {
// B takes some time to process
}
func C(ctx context.Context) {
// C takes some time to process
}
Примечание. Для обработки каждого вызова функции требуется время.
Примечание: B должен вызываться внутри функции A, а C должен вызываться внутри функции B.
Просто нужен пример для этой конкретной ситуации.
Привет, я искал и не смог найти пример этой ситуации, когда происходит цепочка вызовов функций.
Цепочка тоже не имеет значения. Опять же, с чем конкретно у вас проблемы и что вы пробовали?
Я просто пытаюсь написать программу с отменой, поэтому, когда я захочу, я могу отменить весь процесс вызовов функций. И мне просто нужен пример для этой ситуации.
Вы просто передаете тот же контекст, что и аргумент, но всякий раз, когда вы ждете результатов от канала \ удаленного сервера \ чего-либо, вы используете оператор select с ожиданием <- ctx.Done (). Всякий раз, когда контекст будет отменен (функцией отмены или из-за тайм-аута), внутренний канал будет закрыт, и операция приема всегда разблокируется на закрытом канале.
Общий пост об отмене (без контекста, но мысленно замените doneCh на ctx.Done ()) https://blog.golang.org/pipelines
Поговорите об отмене (контекстный пример со страницы 15) https://talks.golang.org/2014/gotham-context.slide#15
Пара примеров https://www.sohamkamani.com/blog/golang/2018-06-17-golang-using-context-cancellation/
Точно так же, как если бы на их обработку не было времени. С чем конкретно у вас проблемы? Что ты пробовал?