可以读取和写入同一频道的工作池

时间:2018-11-27 16:59:16

标签: algorithm go recursion channel goroutine

我需要你的帮助。当前,我正在尝试创建一个工作池,该工作池从一个通道读取连续的作业,然后将结果生成到正在读取的同一个通道中,然后进行工作并将结果生成到同一个通道中。您会得到类似递归的想法。有什么办法可以做到这一点? 我真的很感谢您提供关于设计模式的建议,以使用go例程作为工作程序池和读取作业的通道来实现此解决方案,然后从同一工作程序池将该作业的结果写入相同的通道以继续工作。谢谢。

1 个答案:

答案 0 :(得分:0)

(从Go的角度来看)没有任何理由在阅读后无法将内容写回通道:

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

虽然这很奇怪...而且老实说不推荐它。通常,我已经看到了一个由多个通道组成的系统,数据被向下传送而不进入周期。想树而不是图。