summer/network/message_router/name_router.go中
func (mr *NameRouter) messageWork
for mr.Running { if mr.messageQueue.Empty() { mr.threadEvent.Wait() //可以通过Set()唤醒 continue } //从消息队列取出一个元素 mr.mutex.Lock() if mr.messageQueue.Empty() { continue } msg := mr.messageQueue.Pop() mr.mutex.Unlock() if p := msg.Message; p != nil { mr.executeMessage(msg) } }
这里在continue之前上锁了,但是没有解锁不会重复上锁吗
summer/network/message_router/name_router.go中
func (mr *NameRouter) messageWork
for mr.Running { if mr.messageQueue.Empty() { mr.threadEvent.Wait() //可以通过Set()唤醒 continue } //从消息队列取出一个元素 mr.mutex.Lock() if mr.messageQueue.Empty() { continue } msg := mr.messageQueue.Pop() mr.mutex.Unlock() if p := msg.Message; p != nil { mr.executeMessage(msg) } }这里在continue之前上锁了,但是没有解锁不会重复上锁吗