beego / samples

An open source project for beego sample applications.
Apache License 2.0
914 stars 1.25k forks source link

聊天室的链表循环处理有问题 #17

Open y6828863 opened 7 years ago

y6828863 commented 7 years ago

for ch := waitingList.Back(); ch != nil; ch = ch.Prev() { ch.Value.(chan bool) <- true waitingList.Remove(ch) } chatroom.go 文件中的第76行---79行的链表循环中删除节点的代码操作是有问题的,节点被删除后继续循环操作导致链表某些元素无法真正的被遍历处理,进而部分聊天室的成员会由于chanel阻塞而无法获取到消息,请处理下。

zhuxinquan commented 7 years ago

恩,我也发现这个问题了,改成下面这样就好了

for ch := waitingList.Front(); ch != nil; ch = waitingList.Front() {
    ch.Value.(chan bool) <- true
    waitingList.Remove(ch)
}