| 12345678910111213141516171819 |
- package missinggo
- import (
- "reflect"
- "sync"
- )
- func WaitEvents(l sync.Locker, evs ...*Event) {
- cases := make([]reflect.SelectCase, 0, len(evs))
- for _, ev := range evs {
- cases = append(cases, reflect.SelectCase{
- Dir: reflect.SelectRecv,
- Chan: reflect.ValueOf(ev.C()),
- })
- }
- l.Unlock()
- reflect.Select(cases)
- l.Lock()
- }
|