3 штуки
                  
                  
                  Есть бесконечный пул задач
                  
                  
                  Рабочие проверяют буферизированный канал, в который пишутся задачи:
                  
                  
                  for task := range tasks {
                  
                  
                  taskChannel <- task
                  
                  
                  }
                  
                  
                  По некоторым причинам рабочий может завершить свое выполнение. В таком случае он положит свою ошибку в буферизированный канал, предназначенный для ошибок.
                  
                  
                  При завершении всех рабочих, программа не завершается по причине того, что канал с задачами переполнен, в него пытаются записать еще задач, но его никто не читает
                  
                  
                  Как быть в такой ситуации?
                  
                  
                
В селект впихиваете кейс с Done из контекста. И все прерывается.
Обсуждают сегодня