1
This commit is contained in:
parent
6ef94d7442
commit
37a99c4226
18
msgqueue.go
18
msgqueue.go
@ -72,10 +72,13 @@ func (this *msgQueue) FireEvent(msgId int, args q5.Args) {
|
||||
if !h.deleted {
|
||||
h.cb(args)
|
||||
} else {
|
||||
h.entry.DelInit()
|
||||
node.delingLock.Lock()
|
||||
q5.AppendSlice(&node.delingHandlers, h)
|
||||
node.delingLock.Unlock()
|
||||
}
|
||||
return true
|
||||
})
|
||||
this.clearNode(&node.delingLock, &node.delingHandlers)
|
||||
node.addingLock.Lock()
|
||||
defer node.addingLock.Unlock()
|
||||
if !node.addingHead.Empty() {
|
||||
@ -86,8 +89,21 @@ func (this *msgQueue) FireEvent(msgId int, args q5.Args) {
|
||||
if !h.deleted {
|
||||
node.head.AddTail(&h.entry)
|
||||
h.cb(args)
|
||||
} else {
|
||||
node.delingLock.Lock()
|
||||
q5.AppendSlice(&node.delingHandlers, h)
|
||||
node.delingLock.Unlock()
|
||||
}
|
||||
return true
|
||||
})
|
||||
}
|
||||
this.clearNode(&node.delingLock, &node.delingHandlers)
|
||||
}
|
||||
|
||||
func (this *msgQueue) clearNode(delingLock *sync.Mutex, delingHandlers *[]*MsgHandler) {
|
||||
delingLock.Lock()
|
||||
defer delingLock.Unlock()
|
||||
if len(*delingHandlers) > 0 {
|
||||
*delingHandlers = []*MsgHandler{}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user