Что такое or-done channel?

Middle
179 просмотров
AFK Offer AI

Or-done — паттерн, который позволяет читать из канала с возможностью отмены через done-канал. Без него приходится в каждом select писать case <-done. Хелпер orDone(done, c) возвращает новый канал, который закрывается когда закрыт done или c. Внутри — горутина с select: case v := <-c: отправить в out, case <-done: return. Упрощает код pipeline — каждая стадия просто читает из orDone канала и не думает об отмене.

Следующий вопрос

Что такое gopark и goready?