从中产生的每个goroutine
Mux最终都从同一通道中拉出,因为
c在循环的每次迭代中都会进行更新-
它们不仅仅捕获的值
c。如果将通道传递给goroutine,您将获得预期的结果,如下所示:
for _, c := range channels { go func(c <-chan big.Int) { ... }(c)}您可以在此处测试此修改。
另一个可能的问题是您对
n变量的处理:如果使用进行运行
GOMAXPROCS !=1,则可能有两个goroutines试图一次对其进行更新。该
sync.WaitGroup类型将是等待goroutine完成的更安全的方法。



