我写了一个工人池,工作是接收一个整数并将该数字转换为字符串。但是我遇到了fatal error: all goroutines are asleep - deadlock!
错误。我在做什么错了,我该如何解决?
答案 0 :(得分:1)
我能够使用指向master
的指针而不是普通变量来复制并解决问题。
基本上只需将您的NewWorker()
方法更改为此:
func (m *Master) NewWorker() {
m.Workers = append(m.Workers, Worker{})
}
这是程序更改后输出的输出:
0
1
2
3
4
5
6
7
8
9
10
.
.
.
每次调用NewWorker()
方法时,都没有将worker
附加到同一主对象。这就是为什么切片从来没有像以前那样填充3个工人的原因。