开启事件循环
()
| 76 | |
| 77 | // 开启事件循环 |
| 78 | func (self *eventQueue) StartLoop() EventQueue { |
| 79 | |
| 80 | self.endSignal.Add(1) |
| 81 | |
| 82 | go func() { |
| 83 | |
| 84 | var writeList []interface{} |
| 85 | |
| 86 | for { |
| 87 | writeList = writeList[0:0] |
| 88 | exit := self.Pick(&writeList) |
| 89 | |
| 90 | // 遍历要发送的数据 |
| 91 | for _, msg := range writeList { |
| 92 | switch t := msg.(type) { |
| 93 | case func(): |
| 94 | self.protectedCall(t) |
| 95 | case nil: |
| 96 | break |
| 97 | default: |
| 98 | log.Printf("unexpected type %T", t) |
| 99 | } |
| 100 | } |
| 101 | |
| 102 | if exit { |
| 103 | break |
| 104 | } |
| 105 | } |
| 106 | |
| 107 | self.endSignal.Done() |
| 108 | }() |
| 109 | |
| 110 | return self |
| 111 | } |
| 112 | |
| 113 | // 停止事件循环 |
| 114 | func (self *eventQueue) StopLoop() EventQueue { |
nothing calls this directly
no test coverage detected