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
How Communicating Sequential Goroutines Work
Search
Koki Ide
March 25, 2017
Technology
2
19k
How Communicating Sequential Goroutines Work
Koki Ide
March 25, 2017
Tweet
Share
More Decks by Koki Ide
See All by Koki Ide
次世代のコンテナランタイム!?gVisorのコードを読みながら理解してみる
niconegoto
6
6.1k
How to achieve parallel compilation in Go 1.9
niconegoto
6
6.6k
Let's Realm
niconegoto
0
470
Other Decks in Technology
See All in Technology
組織貢献をするフリーランスエンジニアという生き方
n_takehata
1
1.3k
OpenID Connect for Identity Assurance の概要と翻訳版のご紹介 / 20250219-BizDay17-OIDC4IDA-Intro
oidfj
0
270
表現を育てる
kiyou77
1
210
Tech Blogを書きやすい環境づくり
lycorptech_jp
PRO
1
240
転生CISOサバイバル・ガイド / CISO Career Transition Survival Guide
kanny
3
980
データの品質が低いと何が困るのか
kzykmyzw
6
1.1k
Swiftの “private” を テストする / Testing Swift "private"
yutailang0119
0
130
Classmethod AI Talks(CATs) #16 司会進行スライド(2025.02.12) / classmethod-ai-talks-aka-cats_moderator-slides_vol16_2025-02-12
shinyaa31
0
110
Building Products in the LLM Era
ymatsuwitter
10
5.4k
地方拠点で エンジニアリングマネージャーってできるの? 〜地方という制約を楽しむオーナーシップとコミュニティ作り〜
1coin
1
230
プロセス改善による品質向上事例
tomasagi
2
2.5k
Platform Engineeringは自由のめまい
nwiizo
4
2.1k
Featured
See All Featured
Embracing the Ebb and Flow
colly
84
4.6k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Practical Orchestrator
shlominoach
186
10k
Six Lessons from altMBA
skipperchong
27
3.6k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Code Review Best Practice
trishagee
67
18k
A Tale of Four Properties
chriscoyier
158
23k
Transcript
None
,PLJ*EF !OJDPOFHPUP .FSDBSJ4PV[PI*OD TPQIPNPSFPGUIF6OJWFSTJUZPG5PLZP
ࠓͷͷΰʔϧ ɾ$PODVSSFODZʹ͍ͭͯৄ͘͠ͳΔ ɾ(PͰ.FTTBHFQBTTJOH͕Ͳ͏࣮ݱ͞Ε͍ͯΔ͔Δ ˠ(PͬͯεήʔʂʂͬͯͳΔ
"HFOEB 4IBSFENFNPSZBOE.FTTBHFQBTTJOH*1$ $PODVSSFODZ.PEFM $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOF
$PODVSSFODZ.PEFM
$PODVSSFODZ.PEFM %POPUDPNNVOJDBUFCZTIBSJOHNFNPSZ JOTUFBE TIBSFNFNPSZCZDPNNVOJDBUJOH
ͦͦͳͥϓϩηεؒ௨৴ *1$ ͕ඞཁͳͷ͔ ɾෳϢʔβʔ͕ใʹฒߦΞΫηεͰ͖Δඞཁ ɾܭࢉͷߴԽ ɾγεςϜΛϞδϡʔϧԽͯ͠ߏ͍ͨ͠ $PODVSSFODZ.PEFM
ɾ4IBSFENFNPSZ*OUFSQSPDFTT$PNNVOJDBUJPO ɾ.FTTBHFQBTTJOH*OUFSQSPDFTT$PNNVOJDBUJPO $PODVSSFODZͷΞϓϩʔνํ๏ *1$ େ͖͘छྨʹ͔ΕΔ ڠௐϓϩηεؒͰڞ༗ϝϞϦྖҬ͕֬อ͞ΕΔ ڠௐϓϩηεؒͷϝοηʔδަͰ௨৴͢Δ $PODVSSFODZ.PEFM
ಉ͡ॲཧ ੜ࢈ऀফඅऀ Λॻ͍ͯΈΔ ɾ4IBSFENFNPSZ*OUFSQSPDFTT$PNNVOJDBUJPO ɾ.FTTBHFQBTTJOH*OUFSQSPDFTT$PNNVOJDBUJPO ڠௐϓϩηεؒͰڞ༗ϝϞϦྖҬ͕֬อ͞ΕΔ ڠௐϓϩηεؒͷϝοηʔδަͰ௨৴͢Δ $PODVSSFODZ.PEFM
ɾ4IBSFENFNPSZ*OUFSQSPDFTT$PNNVOJDBUJPO $ Ͱॻ͍ͯΈͨྫ $PODVSSFODZ.PEFM
ੜ࢈ऀHPPETΛੜ࢈ͯ͠RVFVFʹQVTI͢Δ ফඅऀEPOFͷΛݟͯɺHPPET͕ۭ͔Ͳ͏͔ ֬ೝͯ͠ɺRVFVF͔ΒQPQ͢Δ ফඅ͠ऴΘͬͨΒEPOFΛUSVFʹ͢Δ $PODVSSFODZ.PEFM
(PͰॻ͍ͯΈͨྫ ɾ.FTTBHFQBTTJOH*OUFSQSPDFTT$PNNVOJDBUJPO $PODVSSFODZ.PEFM
ੜ࢈ऀHPPETΛੜ࢈ͯ͠DIBOOFMʹ͛Δ ੜ࢈͕ऴΘͬͨΒEPOFΛ͛Δ ফඅऀDIBOOFM͔Βड͚औΔ EPOFΛड͚औͬͨΒॲཧΛऴ͑Δ $PODVSSFODZ.PEFM
4IBSFENFNPSZBOE.FTTBHFQBTTJOH*1$
$PODVSSFODZ.PEFM
4IBSFENFNPSZ*OUFSQSPDFTT$PNNVOJDBUJPO جຊతʹ04ϓϩηεΛଞϓϩηεͷϝϞϦʹΞΫηεͤ͞ͳ͍ ͜ͷ੍ΛͭҎ্ͷϓϩηε͕औΓআ͘ඞཁ͕͋Δ σʔλͷܗࣜҰϓϩηεؒͰܾΊΔͨΊɺ04ؔΘΒͳ͍ ಉ͡Ґஔʹಉ࣌ʹॻ͖ࠐ·ͳ͍͜ͱΛ࣮֬ʹ͢Δඞཁ͕͋Δ 4IBSFENFNPSZϞσϧͷಛ
ϝϞϦͰߦ͑ΔͷͰૣ͍ ϝοηʔδύογϯάҰൠతʹTZTDBMM Ͱ࣮͞ΕΔͷͰɺΧʔωϧΛհࡏͨ͠ࣄΛඞཁͱ͢ΔͨΊ͍ ϨʔείϯσΟγϣϯ͕ى͜Βͳ͍Α͏ʹϩοΫΛͱΔ͜ͱ͕ଟ͍ͨΊ Ұൠతʹ࣮͍͠ͱ͞ΕΔ 4IBSFENFNPSZ*OUFSQSPDFTT$PNNVOJDBUJPO 4IBSFENFNPSZϞσϧͷಛ
.FTTBHFQBTTJOH*OUFSQSPDFTT$PNNVOJDBUJPO
খ͍͞σʔλΛަ͢Δͷʹ༗ޮ .FTTBHFQBTTJOHϞσϧͷಛ 4IBSFENFNPSZϞσϧʹൺ࣮ͯ༰қͱ͞ΕΔ .FTTBHFQBTTJOH*OUFSQSPDFTT$PNNVOJDBUJPO
$PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOF
$PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOF HPSPVUJOF $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOFͰ༻͍ΒΕ͍ͯΔ෦ TFMFDU DIBOOFM HPSPVUJOFؒͰͷϝοηʔδύογϯάΛߦ͏ CZUFͷܰྔͳεϨουͷΑ͏ͳͷ ෳͷDIBOOFMͷड৴Λಉ࣌ʹߦ͏߹ͳͲʹ༻͍Δ
HPSPVUJOF ҙͷͷ04εϨουʹҙͷͷΰϧʔνϯΛεέδϡʔϦϯά͢Δ ./εέδϡʔϦϯάΛ࠾༻ ίϯςΩετεΠονΛ࣮͘͢ߦ͠γεςϜͷͯ͢ͷί ΞΛ׆༻Ͱ͖Δ͕εέδϡʔϥʔͷՃ͕ࡶ (Pͦͷࡶ͞ΛؾʹͤͣίʔυΛॻ͚ΔΑ͏ʹͯ͘͠Ε͍ͯΔ ਆʂʂ $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOF $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOFͰ༻͍ΒΕ͍ͯΔ෦
IUUQTUBMLTHPEPDPSHHJUIVCDPNOJDPOFHPUPUBMLTDPODVSSFODZTMJEF $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOF $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOFͰ༻͍ΒΕ͍ͯΔ෦
IUUQRJJUBDPNOJDPOFHPUPJUFNTEDEGDDDC $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOF $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOFͰ༻͍ΒΕ͍ͯΔ෦
DIBOOFM ܕࢦఆ͕ՄೳͰɺTFOESFDFJWFͰϒϩοΫ͢Δ pSTUDMBTTWBMVFͳͷͰҾΓʹ͑Δ CV⒎FSΛࢦఆ͢Δ͜ͱͰ4FNBQIPSFతͳ͍ํՄೳ $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOF $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOFͰ༻͍ΒΕ͍ͯΔ෦
#MPDLJOH2VFVFతͳ͍ํ ༗ݶPSແݶͷCV⒎FSΛ࣋ͭΩϡʔɻ ΩϟύγςΟΛӽ͑ͯՃ͠Α͏ͱ͢Δͱ͖ٴͼۭ ͷঢ়ଶͰऔΓग़ͦ͏ͱ͢Δͱ͖ʹϒϩοΫ͢Δ͜ͱ ͰɺͭͷϓϩηεͰڞ༗ࢿݯͷॴ༗ݖΛมߋͯ͠ ಉظ͢Δɻ $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOF $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOFͰ༻͍ΒΕ͍ͯΔ෦ DIBOOFM
4FNBQIPSFతͳ͍ํ ڞ༗ࢿݯʹରͯ͠ΞΫηεՄೳͳ ϓϩηεͷΛ੍ݶ͢Δ $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOF $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOFͰ༻͍ΒΕ͍ͯΔ෦ DIBOOFM
TFMFDU ෳͷDIBOOFMͷಡΈॻ͖Λ੍ޚͯ͘͠ΕΔ UJNFPVUఆظ࣮ߦͳͲʹ༻͍Δ͜ͱ͕Ͱ͖Δ DIBOOFMΛڠྗʹαϙʔτ ਆ $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOF $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOFͰ༻͍ΒΕ͍ͯΔ෦
TFMFDU UJNFPVU ඵ͢ΔͱUJNFPVU͢Δ ԼΛඵʹ͢ΔͱzSFTVMUz͕ฦΔ $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOF $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOFͰ༻͍ΒΕ͍ͯΔ෦
ఆظ࣮ߦ ຖඵఆظ࣮ߦ͞Εɺ ඵͰUJNFPVU͢Δ $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOF $PNNVOJDBUJOH4FRVFOUJBM(PSPVUJOFͰ༻͍ΒΕ͍ͯΔ෦ TFMFDU
4VNNBSZ $PODVSSFODZʹେ͖͚ͯ͘ 4IBSFENFNPSZͱ.FTTBHFQBTTJOH͕͋Γɺརͱ͕ܽ͋Δ DIBOOFMͱTFMFDUͰڧྗͳ.FTTBHFQBTTJOHΛ࣮ݱͰ͖Δ TZODύοέʔδΛ͑ഉଞ੍ޚͰ͖Δ͚Ͳɺ (PΒ͘͠DIBOOFM͍͜ͳͯ͠zTIBSFNFNPSZCZDPNNVOJDBUJOHz HPSPVUJOF͍͢͝ɻSVOUJNFҎԼΛಡ͏ʂʂ
(P࠷ߴʂʂʂʂʂ 4VNNBSZ
,PLJ*EF !OJDPOFHPUP .FSDBSJ4PV[PI*OD TPQIPNPSFPGUIF6OJWFSTJUZPG5PLZP