如何修复工作池死锁

我编写了一个工作池,其中的工作是接收一个整数并将该数字转换为字符串返回。但是我遇到了一个fatal error: all goroutines are asleep - deadlock!错误。我做错了什么以及如何解决它?

https://play.golang.org/p/U814C2rV5na


炎炎设计
浏览 67回答 1
1回答

噜噜哒

我能够复制您的问题并通过使用指针而master不是普通变量来修复它。基本上只需将您的NewWorker()方法更改为:func (m *Master) NewWorker() {    m.Workers = append(m.Workers, Worker{})}这是更改后程序打印的输出:012345678910...原因:每次调用NewWorker()方法时,您都不会将 a 附加worker到同一个主对象。这就是为什么该切片从未填充 3 个工作人员,而本应如此。去游乐场
打开App,查看更多内容
随时随地看视频慕课网APP