mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: split gfree list into with-stacks and without-stacks
Currently all free Gs are added to one list. Split this into two lists: one for free Gs with cached stacks and one for Gs without cached stacks. This lets us preferentially allocate Gs that already have a stack, but more importantly, it sets us up to free cached G stacks concurrently. Change-Id: Idbe486f708997e1c9d166662995283f02d1eeb3c Reviewed-on: https://go-review.googlesource.com/20664 Reviewed-by: Rick Hudson <rlh@golang.org> Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
3b0efa689e
commit
1a2cf91f5e
2 changed files with 30 additions and 11 deletions
|
|
@ -523,9 +523,10 @@ type schedt struct {
|
|||
runqsize int32
|
||||
|
||||
// Global cache of dead G's.
|
||||
gflock mutex
|
||||
gfree *g
|
||||
ngfree int32
|
||||
gflock mutex
|
||||
gfreeStack *g
|
||||
gfreeNoStack *g
|
||||
ngfree int32
|
||||
|
||||
// Central cache of sudog structs.
|
||||
sudoglock mutex
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue