From: qydysky Date: Tue, 16 May 2023 19:08:04 +0000 (+0800) Subject: fix X-Git-Tag: v0.27.4 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=3aed6a6ed26422c4809dad3f57c8a510ca16a032;p=part%2F.git fix --- diff --git a/sync/RWMutex.go b/sync/RWMutex.go index 828fb2e..712cc88 100644 --- a/sync/RWMutex.go +++ b/sync/RWMutex.go @@ -55,6 +55,7 @@ func (m *RWMutex) RLock(to ...time.Duration) (lockf func() (unlockf func())) { }() } else { for m.rlc.Load() < ulock { + time.Sleep(time.Millisecond) runtime.Gosched() } } @@ -115,9 +116,11 @@ func (m *RWMutex) Lock(to ...time.Duration) (lockf func() (unlockf func())) { }() } else { for m.rlc.Load() > ulock || m.wantRead.Load() { + time.Sleep(time.Millisecond) runtime.Gosched() } for lockid-1 != m.oll.Load() { + time.Sleep(time.Millisecond) runtime.Gosched() } if !m.rlc.CompareAndSwap(ulock, lock) {