Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
goroutineの仕組みについて
Search
sivchari
November 13, 2021
0
1.5k
goroutineの仕組みについて
Go Conference 2021 Autumnで発表した資料です
sivchari
November 13, 2021
Tweet
Share
More Decks by sivchari
See All by sivchari
What's GOCACHEPROG ?
sivchari
1
350
gh_extensionsによる快適なOSS生活.pdf
sivchari
0
28
Visualization Go scheduler by gosched-simulator
sivchari
1
410
protoc pluginのはじめかた
sivchari
0
27
What's context package
sivchari
0
26
Dive into arena package ~ Go 1.20 release party ~
sivchari
0
67
GopherCon 2023 recap
sivchari
0
33
Go 1.22 range over func/range over int
sivchari
0
63
Deep dive into runtime features provided by Go1.22
sivchari
0
29
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
2.8k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Fireside Chat
paigeccino
39
3.6k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
1k
Designing for humans not robots
tammielis
253
25k
Site-Speed That Sticks
csswizardry
10
780
Designing Experiences People Love
moore
142
24k
Facilitating Awesome Meetings
lara
55
6.5k
Faster Mobile Websites
deanohume
309
31k
Raft: Consensus for Rubyists
vanstee
140
7.1k
The Invisible Side of Design
smashingmag
301
51k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Transcript
goroutineͷΈʹ͍ͭͯ ~Go Conference 2021 Autumn~
w 5BLVNB4IJCVZB!TJWDIBSJ w ଔ$ZCFS"HFOU ༧ఆ w όοΫΤϯυΤϯδχΞ w MJOUFS
044͕͖ ࣗݾհ
w (PͷSVOUJNFΛࢧ͑Δཁૉ w HPSPVUJOFͷϥΠϑλΠϜ w HPSPVUJOFͷεέδϡʔϦϯά ͢͜ͱ
~Let's Go~
~GoͷruntimeΛࢧ͑Δཁૉ~
w (HPSPVUJOF w .ϚγϯεϨου w 1HPSPVUJOFΛ࣮ߦ͢ΔϦιʔε w TDIFEάϩʔόϧͰϢχʔΫɺશͯͷ1Ͱڞ༗͞ΕΔ ొਓ
શମ૾ TDIFE SVOR NJEMF QJEMF ( 1 ( (
( ( ( ( 1 . . . 1 1 1 . . ( ( ( SVOR ( ( ( ( ( ( SVOR ( ( ( ( ( (
શମ૾ TDIFE SVOR NJEMF QJEMF ( 1 ( (
( ( ( ( 1 . . . 1 1 1 . . ( ( ( SVOR ( ( ( ( ( ( SVOR ( ( ( ( ( (
w NH ( Λ࣮ߦ͍ͯ͠ΔN . w TDIFE1$ͳͲͷΛอ࣋͢ΔελοΫ w BUPNJDTUBUVTHPSPVUJOFͷঢ়ଶ
ͭ w HPQDHPSPVUJOFΛੜͨ͠HPͷ1$ w TUBSUQDHPSPVUJOFͷ1$ G
શମ૾ TDIFE SVOR NJEMF QJEMF ( 1 ( (
( ( ( ( 1 . . . 1 1 1 . . ( ( ( SVOR ( ( ( ( ( ( SVOR ( ( ( ( ( (
w HεέδϡʔϥʔͷͨΊͷHPSPVUJOF w DVSHݱࡏ࣮ߦ͍ͯ͠ΔHPSPVUJOF w Q(PͷίʔυΛ࣮ߦ͢ΔͨΊʹඥͮ͘Q 1 M
શମ૾ TDIFE SVOR NJEMF QJEMF ( 1 ( (
( ( ( ( 1 . . . 1 1 1 . . ( ( ( SVOR ( ( ( ( ( ( SVOR ( ( ( ( ( (
w NQ 1 ʹඥͮ͘N . w SVOR1͝ͱʹอ࣋͢ΔH ( ͷMPDBMRVFVF
w HGSFF࣮ߦ͍ͯ͠ͳ͍ར༻ՄೳͳH ( P
શମ૾ TDIFE SVOR NJEMF QJEMF ( 1 ( (
( ( ( ( 1 . . . 1 1 1 . . ( ( ( SVOR ( ( ( ( ( ( SVOR ( ( ( ( ( (
w NJEMFJEMFͷN . Λอ࣋ w QJEMFJEMFͷQ 1 Λอ࣋ w SVOR
H ( Λอ࣋͢ΔHMPCBMRVFVF sched
~goroutineͷϥΠϑλΠϜ~
αϯϓϧίʔυ
newproc . 1 ( SVOR $SFBUFHPSPVUJOF
newproc1 ( . 1 ( SVOR
newproc ( . 1 ( SVOR
runqput ( . 1 ( SVOR (
runqputslow TDIFE . 1 ( SVOR (
globruqputbatch TDIFE . 1 ( SVOR ( (
~goroutineͷεέδϡʔϦϯά~
schedule TDIFE . 1 ( SVOR (
globrunqget TDIFE ( . 1 ( SVOR (
schedule . 1 ( SVOR (
runqget ( . 1 ( SVOR (
schedule . 1 ( SVOR
fi ndrunnable ( *0 ❌ @(XBJUJOH@(SVOOBCMF ( . 1
( SVOR
1 . ( SVOR 1 . ( SVOR (
( ( ( ( ( fi ndrunnable
stealWork/runqsteal 1 . ( SVOR 1 ( SVOR (
( ( ( ( ( ( ( ( .
execute ( . 1 ( SVOR
goexit ( . 1 ( SVOR
goexit1 ( . 1 ( SVOR
mcall ( . 1 ( SVOR
UPHGSFF goexit0 ( . 1 ( SVOR
αϯϓϧίʔυ IUUQTQMBZHPMBOHPSHQX81SL$YO)G
w (PಠࣗͷεέδϡʔϥʔͰHPSPVUJOFΛ੍ޚ͍ͯ͠Δ w ֤1͕SVORΛ࣋ͭ͜ͱͰϓϩάϥϜͷޮ͕ߴ·Δ w ෳࡶͳ࣮ͷ͓͔͛Ͱ؆୯ʹฒߦॲཧΛ࣮Ͱ͖Δ ·ͱΊ
~Tank you for watching~