You mean something like this?
func (b *RingBuf) ReadWait(min uint32, timeout time.Duration) bool {
if min == 0 {
min = 1
}
if b.ReadAvail() >= min {
return true
}
if timeout.Nanoseconds() == 0 {
return false
}
const pollPeriod = 100 * time.Nanosecond
niter := int64(timeout.Nanoseconds() / pollPeriod.Nanoseconds())
for i := int64(0); i < niter; i++ {
if b.ReadAvail() >= min {
return true
}
time.Sleep(pollPeriod)
}
return false
}
I think it would be cheaper to call time.Sleep than spinning on
> runtime.Gosched.
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.