新来并确保我在正确的页面上使用通道 + 并发我有一个结构
type Playlist struct {
playList []*Song
updateList chan *Song
}
我有 2 个函数可以在单独的 go 例程中操作数据。
第一个是每当在频道上发送指向歌曲的指针时将数据附加到播放列表:
func (p *Playlist) continuousUpdate() {
go func (){
for newSong := range p.updateList {
p.playlist = append(p.playlist, newSong)
}
}()
}
第二个,每 24 小时一个计时器将滴答,从而将播放列表重置为一个空片段。
func (p *Playlist) controlCurrentPlayList(c <-chan time.Time) {
go func(){
for {
<-c
p.playlist = make([]*Song, 0)
log.Println("Current playlist has reset")
}
}()
}
两个独立的通道是否处理数据的同步?或者我很容易遇到竞争条件?
跑了go build -race,没有出现错误。
慕田峪4524236
相关分类