我是go的初学者,我今天写了一个问题代码。本意是让资源生成和消费的时候同时打印出该资源信息。
但是该程序会导致死锁,有没有什么解决方法能保证输出信息和管道同步
```go
var mu sync.Mutex
func produce(ch chan<- int){
for i:=0;i<10;i++{
mu.Lock()
ch<-i
fmt.Println("produce:"+strconv.Itoa(i))
mu.Unlock()
}
}
func consumer(ch <- chan int){
for i:=0;i<10;i++{
mu.Lock()
v:=<-ch
fmt.Println("consumer:"+strconv.Itoa(v))
mu.Unlock()
}
}
func main(){
ch:=make(chan int,5)
go produce(ch)
go consumer(ch)
time.Sleep(10*time.Second)
}
```
有疑问加站长微信联系(非本文作者)