我做了两次尝试,将通道作为参数传递给函数,但是都失败了(死锁):
尝试1:
func done(signal *chan bool) {
*signal <- true
}
func main() {
signal := make(chan bool)
done(&signal)
<-signal
fmt.Println("completed")
}
尝试2:
func done(signal chan bool) {
signal <- true
}
func main() {
signal := make(chan bool)
done(signal)
<-signal
fmt.Println("completed")
}
好吧,我没主意。将通道传递给函数的正确方法应该是什么?
done(&signal)
被同步调用。也许您想做的就是异步调用它?
为此,请将关键字go
放在函数调用的前面
go done(&signal)
主线程将一直阻塞,直到完成函数写入通道。并且done方法将在写入通道时阻塞,直到主线程读取该通道为止。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句