send full channel?
G1
callsinto the scheduler
set G1 to waiting
unlink G1, M
ch <- task, but chan is full
G1
M
P
G2 runnable
G1
waiting
schedule a runnable G
from the P runqueue
runQ
is block, so gopark()
67.
resuming goroutines
G2
calls intothe scheduler
set G1 to runnable
puts it on runqueue
task := <- chan, then sender can run G2
M
P
G1
runnable
return to G2
runQ
goready(G1)
G0
current G