20 lines
336 B
Go
20 lines
336 B
Go
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()
|
|
}
|