《零基础Go语言算法实战》
【题目 2-29】通道缓冲问题
以下的代码迭代会有什么问题?
package main
import "sync"
type threadSafeMap struct {
ages map[string]int
sync.Mutex
}
func (set *threadSafeMap) Iteration() <-chan interface{} {
ch := make(chan interface{})
go func() {
set.Lock()
for elem := range set.ages {
ch <- elem
}
close(ch)
set.Unlock()
}()
return ch
}
【解答】
默认情况下使用 make() 函数初始化的通道是无缓冲的,也就是在迭代写时会阻塞。