【发布时间】:2015-08-12 22:23:05
【问题描述】:
新来的,并确保我在正确的页面上使用通道 + 并发我有一个结构
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,没有出现错误。
【问题讨论】:
标签: go