From 3aed6a6ed26422c4809dad3f57c8a510ca16a032 Mon Sep 17 00:00:00 2001 From: qydysky Date: Wed, 17 May 2023 03:08:04 +0800 Subject: [PATCH] fix --- sync/RWMutex.go | 3 +++ 1 file changed, 3 insertions(+) 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) { -- 2.39.2