我需要你的帮助。当前,我正在尝试创建一个工作池,该工作池从一个通道读取连续的作业,然后将结果生成到正在读取的同一个通道中,然后进行工作并将结果生成到同一个通道中。您会得到类似递归的想法。有什么办法可以做到这一点? 我真的很感谢您提供关于设计模式的建议,以使用go例程作为工作程序池和读取作业的通道来实现此解决方案,然后从同一工作程序池将该作业的结果写入相同的通道以继续工作。谢谢。
答案 0 :(得分:0)
(从Go的角度来看)没有任何理由在阅读后无法将内容写回通道:
func Foo(c chan int) {
x := <-c
// do something to x
c <- x
}
虽然这很奇怪...而且老实说不推荐它。通常,我已经看到了一个由多个通道组成的系统,数据被向下传送而不进入周期。想树而不是图。