Рабочий пул, который читает и пишет в тот же канал - PullRequest
0 голосов
/ 27 ноября 2018

Мне нужна твоя помощь.В настоящее время я пытаюсь создать рабочий пул, который читает непрерывные задания из канала, а затем выдает результат на тот же канал, с которого он читает, чтобы затем выполнять работу и выводить результат на тот же канал.Вы получаете идею, как рекурсию.Есть ли способ сделать это возможным?Я был бы очень признателен за советы по шаблонам проектирования для реализации этого решения с использованием подпрограмм go в качестве рабочего пула и каналов для чтения в заданиях, а затем из одного и того же рабочего пула записать результат этого задания в тот же канал для продолжения работы.Спасибо.

1 Ответ

0 голосов
/ 27 ноября 2018

Нет причины, по которой что-то не может (с точки зрения Go) записать обратно на канал после прочтения:

func Foo(c chan int) {
  x := <-c
  // do something to x
  c <- x
}

Хотя это странно ... И, честно говоря, не рекомендую этого.Обычно я видел систему, состоящую из нескольких каналов с передачей данных без циклов.Думайте деревья вместо графиков.

...