]> 127.0.0.1 Git - part/.git/commitdiff
add v0.27.2
authorqydysky <qydysky@foxmail.com>
Mon, 15 May 2023 11:02:38 +0000 (19:02 +0800)
committerqydysky <qydysky@foxmail.com>
Mon, 15 May 2023 11:02:38 +0000 (19:02 +0800)
sync/RWMutex.go

index b3c17f169f2661157fc7cd19451ec0d5276eb61b..c6f881276760badba9749b9c78ad4fc07cc32955 100644 (file)
@@ -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()))
                        }