在一个协程中使用Mutex时,同时往无缓存的channel中写入数据,为什么没有出现死锁?(尽管在主协程中有读操作)
代码如下:
```
func main() {
ch1 := make(chan int)
mutx := sync.RWMutex{}
go func() {
mutx.Lock()
for i := 0; i < 10; i++ {
ch1 <- i
}
defer close(ch1)
mutx.Unlock()
}()
for {
r := <-ch1
fmt.Println(r)
time.Sleep(time.Second)
}
}
```
具体问题:
使用互斥锁之后,应该是先执行完该协程的代码才会继续执行其它代码吧?那往该协程中往无缓存channel中写入数据,应该出现死锁才对吧?
有疑问加站长微信联系(非本文作者)