From: qydysky Date: Mon, 15 May 2023 11:02:38 +0000 (+0800) Subject: add X-Git-Tag: v0.27.2 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=d117b02be8d53a5155eca8d38bc3b9348a7ada10;p=part%2F.git add --- diff --git a/sync/RWMutex.go b/sync/RWMutex.go index b3c17f1..c6f8812 100644 --- a/sync/RWMutex.go +++ b/sync/RWMutex.go @@ -89,12 +89,18 @@ func (m *RWMutex) Lock(to ...time.Duration) (lockf func() (unlockf func())) { } } 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())) }