Merge pull request #458 from xushiwei/ll

runtime chan fix: ChanTryRecv
This commit is contained in:
xushiwei
2024-07-07 17:36:53 +08:00
committed by GitHub

View File

@@ -167,10 +167,10 @@ func ChanTryRecv(p *Chan, v unsafe.Pointer, eltSize int) (recvOK bool, tryOK boo
p.cond.Broadcast() p.cond.Broadcast()
if n == 0 { if n == 0 {
p.mutex.Lock() p.mutex.Lock()
if p.getp == chanHasRecv { for p.getp == chanHasRecv && !p.close {
p.cond.Wait(&p.mutex) p.cond.Wait(&p.mutex)
} }
recvOK = (p.getp != chanHasRecv) recvOK = !p.close
tryOK = recvOK tryOK = recvOK
p.mutex.Unlock() p.mutex.Unlock()
} else { } else {