Как использовать context.Context с отменой в цепочке вызовов функций - PullRequest
0 голосов
/ 25 октября 2018

Предположим, у меня есть следующие функции:

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.

Просто нужен пример для этой конкретной ситуации.

1 Ответ

0 голосов
/ 25 октября 2018

Вы просто передаете тот же контекст, что и аргумент, но всякий раз, когда вы ожидаете результатов от канала \ удаленного сервера \ всего, вы используете оператор select с ожиданием <- ctx.Done ().Всякий раз, когда контекст будет отменен (с помощью функции отмены или из-за тайм-аута), внутренний канал будет закрыт, и операция приема всегда разблокируется на закрытом канале.</p>

Общий пост об отмене (без контекста, но мысленно замените 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...