}
}
c := time.Now()
- for m.rlc.Load() > ulock || lockid-1 != m.oll.Load() {
+ for m.rlc.Load() > ulock {
if time.Since(c) > to[0] {
panic(fmt.Sprintf("timeout to wait rlock, rlc:%d", m.rlc.Load()))
}
runtime.Gosched()
}
+ for lockid-1 != m.oll.Load() {
+ if time.Since(c) > to[0] {
+ panic(fmt.Sprintf("timeout to wait lock, rlc:%d", m.rlc.Load()))
+ }
+ runtime.Gosched()
+ }
if !m.rlc.CompareAndSwap(ulock, lock) {
panic(fmt.Sprintf("csa error, rlc:%d", m.rlc.Load()))
}