mirror of
https://github.com/golang/go
synced 2024-11-12 09:20:22 -07:00
runtime: use gList in closechan
Change-Id: I8148eb17fe9f2cbb659c35d84cdd212b46dc23bf Reviewed-on: https://go-review.googlesource.com/129401 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
This commit is contained in:
parent
083938df14
commit
a034f310b0
@ -343,7 +343,7 @@ func closechan(c *hchan) {
|
||||
|
||||
c.closed = 1
|
||||
|
||||
var glist *g
|
||||
var glist gList
|
||||
|
||||
// release all readers
|
||||
for {
|
||||
@ -363,8 +363,7 @@ func closechan(c *hchan) {
|
||||
if raceenabled {
|
||||
raceacquireg(gp, unsafe.Pointer(c))
|
||||
}
|
||||
gp.schedlink.set(glist)
|
||||
glist = gp
|
||||
glist.push(gp)
|
||||
}
|
||||
|
||||
// release all writers (they will panic)
|
||||
@ -382,15 +381,13 @@ func closechan(c *hchan) {
|
||||
if raceenabled {
|
||||
raceacquireg(gp, unsafe.Pointer(c))
|
||||
}
|
||||
gp.schedlink.set(glist)
|
||||
glist = gp
|
||||
glist.push(gp)
|
||||
}
|
||||
unlock(&c.lock)
|
||||
|
||||
// Ready all Gs now that we've dropped the channel lock.
|
||||
for glist != nil {
|
||||
gp := glist
|
||||
glist = glist.schedlink.ptr()
|
||||
for !glist.empty() {
|
||||
gp := glist.pop()
|
||||
gp.schedlink = 0
|
||||
goready(gp, 3)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user