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()
|
||
|
}
|