Algorithm 读取和写入同一通道go的工作池

Algorithm 读取和写入同一通道go的工作池,algorithm,go,recursion,channel,goroutine,Algorithm,Go,Recursion,Channel,Goroutine,我需要你的帮助。目前,我正在尝试创建一个工作池,该工作池从一个通道读取连续作业,然后将结果生成到从中读取的同一通道,然后执行工作并将结果生成到同一通道。你有点像递归。有什么办法可以做到这一点吗? 我非常感谢您对设计模式的建议,以实现此解决方案,使用go例程作为工作池和通道读入作业,然后从同一工作池将作业的结果写入同一通道以保持工作。多谢各位 没有理由(从Go的角度)在阅读某个频道后无法将其写回: func Foo(c chan int) { x := <-c // do somet

我需要你的帮助。目前,我正在尝试创建一个工作池,该工作池从一个通道读取连续作业,然后将结果生成到从中读取的同一通道,然后执行工作并将结果生成到同一通道。你有点像递归。有什么办法可以做到这一点吗?
我非常感谢您对设计模式的建议,以实现此解决方案,使用go例程作为工作池和通道读入作业,然后从同一工作池将作业的结果写入同一通道以保持工作。多谢各位

没有理由(从Go的角度)在阅读某个频道后无法将其写回:

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

x:=为什么要在同一频道上发布结果/完成的作业?如果您这样做,其他工作人员可能会选择该频道(他们会如何处理它?不管是什么,完成该频道的原始工作人员也可以这样做,而无需重新发送/接收开销)。对于建议,请查看:感谢您的回复。我正在解决一个应该使用递归但会导致内存问题的问题。因此,我决定尝试实现一个工作池,以连续接收来自某个通道的工作,执行该工作,然后将该值传递回它正在接收的同一个通道,如果有一个工作线程找到该值然后,我希望他们都能优雅地退出。我在尝试找出定义此模式的最佳方法而不处理死锁问题时遇到了一些问题。我真的很感激一些指导,提前感谢您是否使用缓冲通道?我目前正在尝试这两种方法。使用缓冲通道的效果更好。由于同一个go例程正在读写,缓冲通道可能会对您更有效。谢谢!找到结果后,有没有关于如何优雅地结束go例程的建议?