Comments 5
А кто пишет в канал done? Его читают как в горутинах(подзадачах) так и из кода контролирующего запуска горутин...
Нашел ответ в ссылке внутри статьи. Было бы, здорово, для полноты и автономности примеров код, все так и показать в примерах кода, что происходит с done извне.
P. S. Это вкусовщина
"... но у нас нет канала обратной связи для управления запущенными горутинами. Как минимум нужен канал done"
- если имеется ввиду эта фразу, то про запись в done речь не шла: для остановки горутины достаточно закрыть канал done и все горутины, в которые done был передан смогут прослушать сигнал. Канал done действительно может прослушиваться родительской горутиной, но также может быть создан в родительской горутине и передан в дочерние для управления их работой(для из завершения).
Я привык использовать conc от sourcegraph - он умеет так же паники перехватывать, чтобы не городить у себя везде конструкции на всякий. И немного других фич, которые идут в комплекте с пулами воркеров. Но в целом да, можно обойтись и стандартной библиотекой, написав свои обертки.
ErrorHandling-патерн в golang