Upgrade to Pro — share decks privately, control downloads, hide ads and more …

『Go言語による並行処理』 を読んで

abemotion
February 07, 2020

『Go言語による並行処理』 を読んで

golang.tokyo # 29 の資料です。
https://golangtokyo.connpass.com/event/164955/

abemotion

February 07, 2020
Tweet

More Decks by abemotion

Other Decks in Technology

Transcript

  1. HPMBOHUPLZP
    ʰ(PݴޠʹΑΔฒߦॲཧʱ
    ΛಡΜͰ
    HPMBOHUPLZP
    !BCFNPUJPO

    View Slide

  2. HPMBOHUPLZP
    ࣗݾ঺հ
    !BCFNPUJPO
    DPDPOBMB
    4FSWFS4JEF&OHJOFFS
    43&νʔϜ
    (P3BJMT$BLF1)1
    5XJUUFSBCFNPUJPO
    ςχεొࢁ

    View Slide

  3. HPMBOHUPLZP
    εΩϧͷϑϦʔϚʔέοτ
    ݸਓͷ஌ࣝɾεΩϧɾܦݧΛؾܰʹചങ
    ొ࿥ձһ਺ສਓ
    ίίφϥ๏཯૬ஊ
    ίίφϥϛʔπ

    View Slide

  4. HPMBOHUPLZP
    ৽ϓϩϑΟʔϧϖʔδ
    ˠɹϚΠΫϩαʔϏεߏ੒Ͱ։ൃ
    ɹɹ(PΞοϓσʔτ
    ɹɹɹɹɹʢEFQˠ(P.PEVMFTʣ
    ɹɹ(PΞοϓσʔτ

    View Slide

  5. HPMBOHUPLZP
    γεςϜߏ੒
    "1*(BUFXBZ (P
    ɾ1SPpMF4FSWJDF 3BJMT
    ͷ
    ઃܭʙ։ൃ·Ͱ୲౰
    /VYU&YQSFTT (P 3BJMT
    H31$
    H31$
    "1*(BUFXBZ 1SPpMF4FSWJDF
    1SPpMF8FC

    View Slide

  6. HPMBOHUPLZP
    γεςϜߏ੒
    /VYU&YQSFTT (P
    H31$
    H31$
    "1*(BUFXBZ
    3BJMT
    "1*4FSWJDF
    1SPpMF8FC
    3BJMT
    1SPpMF4FSWJDF
    3&45
    ˠฒߦॲཧΛ࢖͍͍ͨཁ͕݅ग़͖ͯͨ

    View Slide

  7. HPMBOHUPLZP
    ηογϣϯ಺༰
    ฒߦॲཧಋೖʹ͋ͨͬͯɺʰ(PݴޠʹΑΔฒߦॲཧʱΛ
    ಡΜͰɺ಺༰ʹ͍ͭͯҰ෦·ͱΊͯΈ·ͨ͠ʂ
    ʰ(PݴޠʹΑΔฒߦॲཧʱ
    *4#/

    View Slide

  8. HPMBOHUPLZP
    ΞδΣϯμ
    ͳͥฒߦॲཧ͕೉͍͠ͷ͔
    (PͰͷฒߦॲཧύλʔϯ

    View Slide

  9. HPMBOHUPLZP
    ͳͥฒߦॲཧ͕೉͍͠ͷ͔

    View Slide

  10. HPMBOHUPLZP
    ͳͥฒߦॲཧ͕೉͍͠ͷ͔
    ڝ߹ঢ়ଶ
    ΞτϛοΫੑ
    ϝϞϦΞΫηεಉظ
    σουϩοΫ
    Ϧιʔεރׇ
    ฒߦॲཧͷ҆શੑΛݟۃΊΔ

    View Slide

  11. HPMBOHUPLZP
    ڝ߹ঢ়ଶ
    ͭҎ্ͷૢ࡞͕ਖ਼͍͠ॱ൪Ͱ࣮ߦ͞Εͳ͚Ε͹͍͚ͳ͍ͱ͜ΖͰɺ
    ϓϩάϥϜ͕ॱংΛอূ͢ΔΑ͏ʹॻ͔Ε͍ͯͳ͔ͬͨͱ͖ʹൃੜɻ
    ڝ߹ঢ়ଶ͸͍ΘΏΔσʔλڝ߹ɻ
    ͋Δฒߦॲཧͷૢ࡞͕ม਺ΛಡΈࠐ΋͏ͱ͍ͯ͠Δͱ͖ʹɺ
    ΄͔ͷฒߦॲཧͷૢ࡞͕ෆ֬ఆͷλΠϛϯάͰಉ͡ม਺ʹॻ͖ࠐΈ
    Λߦ͓͏ͱ͢Δͱى͖Δɻ

    View Slide

  12. HPMBOHUPLZP
    ڝ߹ঢ়ଶ
    ൃੜ͢ΔݪҼ
    ଟ͘ͷ৔߹ɺσʔλڝ߹͸ϓϩάϥϜΛ௚ྻʹߟ͑ͨͱ͖ʹࠞೖɻ
    ͋Δίʔυ͕ଞͷίʔυΑΓ΋લʹॻ͍ͯ͋Δ͔ΒɺͦΕ͕ઌʹ
    ࣮ߦ͞ΕΔͱࢥͬͯ͠·͏ɻ
    ฒߦॲཧͷίʔυΛॻ͘ͱ͖͸ɺߟ͑ΒΕΔγφϦΦΛ৻ॏʹ൓
    ᢸ͠ͳ͍ͱ͍͚ͳ͍ɻ
    ֤ૢ࡞͕௕͔͔࣌ؒͬͯߦΘΕΔͷΛ૝૾͢Δͱ෼͔Γ΍͍͢ɻ

    View Slide

  13. HPMBOHUPLZP
    ͳͥฒߦॲཧ͕೉͍͠ͷ͔
    ڝ߹ঢ়ଶ
    ΞτϛοΫੑ
    ϝϞϦΞΫηεಉظ
    σουϩοΫ
    Ϧιʔεރׇ
    ฒߦॲཧͷ҆શੑΛݟۃΊΔ

    View Slide

  14. HPMBOHUPLZP
    ΞτϛοΫੑ
    Կ͔͕ΞτϛοΫੑ͕͋Δͱߟ͑ΒΕΔ৔߹ɺ
    ͦΕ͕ૢ࡞͞Ε͍ͯΔಛఆͷίϯςΩετͷதͰ͸෼ׂෆೳɺ
    ͋Δ͍͸தஅෆՄͰ͋Δ͜ͱΛҙຯ͢Δɻ
    ͋Δ΋ͷ͕ΞτϛοΫͰ͋Ε͹ɺͦΕΛෳ਺ͷฒߦͳίϯςΩετ
    Ͱ҆શʹѻ͑Δ͜ͱ͕҉໧ʹอূ͞Ε͍ͯΔɻ
    ͜ͷੑ࣭ʹΑͬͯ࿦ཧతʹਖ਼͍͠ϓϩάϥϜΛߏ੒Ͱ͖ΔΑ͏ʹͳ
    Δɻ

    View Slide

  15. HPMBOHUPLZP
    ͳͥฒߦॲཧ͕೉͍͠ͷ͔
    ڝ߹ঢ়ଶ
    ΞτϛοΫੑ
    ϝϞϦΞΫηεಉظ
    σουϩοΫ
    Ϧιʔεރׇ
    ฒߦॲཧͷ҆શੑΛݟۃΊΔ

    View Slide

  16. HPMBOHUPLZP
    ϝϞϦΞΫηεಉظ
    ϓϩάϥϜ಺Ͱڞ༗Ϧιʔεʹର͢ΔഉଞతͳΞΫηε৔ॴ
    ˠΫϦςΟΧϧηΫγϣϯͱݺ͹Ε͍ͯΔ
    ΫϦςΟΧϧηΫγϣϯΛकΔํ๏ͷ͕ͭϝϞϦΞΫηεಉظ

    View Slide

  17. HPMBOHUPLZP
    ϝϞϦΞΫηεಉظ

    View Slide

  18. HPMBOHUPLZP
    ͳͥฒߦॲཧ͕೉͍͠ͷ͔
    ڝ߹ঢ়ଶ
    ΞτϛοΫੑ
    ϝϞϦΞΫηεಉظ
    σουϩοΫ
    Ϧιʔεރׇ
    ฒߦॲཧͷ҆શੑΛݟۃΊΔ

    View Slide

  19. HPMBOHUPLZP
    σουϩοΫ
    ͢΂ͯͷฒߦͳϓϩηε͕͓ޓ͍ͷॲཧΛ଴ͪ߹͍ͬͯΔঢ়گɻ
    ˠϓϩάϥϜ͸֎෦͔Βͷհೖ͕ͳ͍ݶΓɺܾͯ͠ಈ࡞͢Δঢ়ଶʹ͸ͳΒͳ͍

    HPQSJOU4VN B C

    HPQSJOU4VN C B

    ࠷ॳͷؔ਺ݺͼग़͠ͰɺBΛϩοΫͯ͠ɺͦͷޙCΛϩοΫ͢Δͱ͢Δɻ
    ͔͠͠ҰํͰɺճ໨ͷؔ਺ݺͼग़͠Ͱ͸ɺCΛϩοΫͯ͠ɺͦͷޙʹBΛϩο
    Ϋ͠Α͏ͱ͢Δ
    ˠ྆ํͷΰϧʔνϯ͸͓ޓ͍ʹແݶʹ଴ͪ߹͏

    View Slide

  20. HPMBOHUPLZP
    DPGGNBO৚݅
    σουϩοΫ͕ൃੜ͢ΔͨΊʹଘࡏ͠ͳ͚Ε͹͍͚ͳ͍৚݅
    ૬ޓഉଞ
    ͋Δฒߦϓϩηε͕Ϧιʔεʹରͯ͠ഉଞతͳݖརΛͲͷ࣌఺ʹ͓͍ͯ΋อ͍࣋ͯ͠Δ
    ৚݅଴ͪ
    ͋Δฒߦϓϩηε͸Ϧιʔεͷอ࣋ͱ௥ՃͷϦιʔε଴ͪΛಉ࣌ʹߦΘͳ͚Ε͹ͳΒͳ͍
    ԣऔΓෆՄ
    ͋ΔฒߦϓϩηεʹΑͬͯอ࣋͞Ε͍ͯΔϦιʔε͸ɺͦͷϓϩηεʹΑͬͯͷΈղ์͞ΕΔ
    ॥؀଴ͪ
    ͋Δฒߦϓϩηε [email protected]
    ͸ɺଞͷ࿈ͳ͍ͬͯΔ͋Δฒߦϓϩηε [email protected]
    Λ଴ͨͳ͚Ε͹ͳΒͳ͍ɻ
    ͦͯ͠ [email protected]
    ͸ [email protected]
    Λ଴͍ͬͯΔɻ
    ˠ͜ΕΒͷ๏ଇ͸σουϩοΫͷ༧๷ʹ΋໾ཱͭɻͲΕ͔ͭͰ΋ਅʹͳΒͳ͚Ε͹ྑ͍

    View Slide

  21. HPMBOHUPLZP
    ͳͥฒߦॲཧ͕೉͍͠ͷ͔
    ڝ߹ঢ়ଶ
    ΞτϛοΫੑ
    ϝϞϦΞΫηεಉظ
    σουϩοΫ
    Ϧιʔεރׇ
    ฒߦॲཧͷ҆શੑΛݟۃΊΔ

    View Slide

  22. HPMBOHUPLZP
    Ϧιʔεރׇ
    ฒߦϓϩηε͕࢓ࣄΛ͢ΔͷʹඞཁͳϦιʔεΛऔಘͰ͖ͳ͍ঢ়گɻ
    Ϧιʔεރׇ͸௨ৗɺͭҎ্ͷᩦཉͳฒߦϓϩηε͕ෆެฏʹଞͷϓ
    ϩηε͕ՄೳͳݶΓ࢓ࣄΛޮ཰తʹߦ͓͏ͱ͍ͯ͠ΔͷΛ๦͍͛ͯΔɺ
    ΋͘͠͸·͍ͬͨͤͯ͘͞ͳ͍ͱ͍ͬͨঢ়گΛ҉ʹҙຯ͍ͯ͠Δɻ
    ϦιʔεރׇΛݟ͚ͭΔٕज़͸ɺܭଌɻ
    ݕ஌ͯ͠ղܾ͢Δྑ͍ํ๏ͷͭ͸݁ՌΛϩάग़ྗͯ͠ɺ଎౓͕ظ଴௨
    Γʹͳ͍ͬͯΔ͔Λଌఆ͢Δ͜ͱɻ
    Ϧιʔεރׇ͸ϓϩάϥϜ͕ඇޮ཰తෆద੾ʹৼ෣ͬͯ͠·͏ݪҼͱ
    ͳΔɻ

    View Slide

  23. HPMBOHUPLZP
    ͳͥฒߦॲཧ͕೉͍͠ͷ͔
    ڝ߹ঢ়ଶ
    ΞτϛοΫੑ
    ϝϞϦΞΫηεಉظ
    σουϩοΫ
    Ϧιʔεރׇ
    ฒߦॲཧͷ҆શੑΛݟۃΊΔ

    View Slide

  24. HPMBOHUPLZP
    ฒߦॲཧͷ҆શੑΛݟۃΊΔ
    ฒߦॲཧ͸ؾΛ͚ͭͳ͍ͱ͍͚ͳ͍؍఺΋ଟ͘೉͍͠ɻ
    ίʔυͷಡΈखʹ΋ෳࡶ͞Λ΋ͨΒͯ͠͠·͏ͷͰɺίϝϯτΛ
    ॻ͘ϙΠϯτ
    ɾ୭͕ฒߦॲཧΛߦͳ͍ͬͯΔ͔
    ɾ໰୊Λղܾ͢Δʹ͋ͨΓߟ࡯͠ͳ͚Ε͹͍͚ͳ͍ൣғ͕ͲͷΑ
    ͏ʹฒߦॲཧʹରԠ͍ͯ͠Δ͔
    ɾ୭͕ಉظॲཧΛ୲͍ͬͯΔ͔
    ˠಉ྅΍কདྷͷࣗ෼Λॿ͚ͯ͋͛·͠ΐ͏ɻ

    View Slide

  25. HPMBOHUPLZP
    ΞδΣϯμ
    ͳͥฒߦॲཧ͕೉͍͠ͷ͔
    (PͰͷฒߦॲཧύλʔϯ

    View Slide

  26. HPMBOHUPLZP
    (PͰͷฒߦॲཧύλʔϯ

    View Slide

  27. HPMBOHUPLZP
    (PͰͷฒߦॲཧύλʔϯ
    ߆ଋ
    GPSTFMFDUϧʔϓ
    ΰϧʔνϯϦʔΫΛආ͚Δ
    ύΠϓϥΠϯ
    ϑΝϯΞ΢τɺϑΝϯΠϯ

    View Slide

  28. HPMBOHUPLZP
    ߆ଋ
    ΞυϗοΫ߆ଋ
    ߆ଋΛن໿نଇ ίϛϡχςΟɺ৬৔ɺίʔυϕʔεʹΑͬͯࢦఆ

    ˠकΓଓ͚Δͷ͸೉͍͠
    ଟ͘ͷਓ͕खΛೖΕΔೲظͷഭͬͨ։ൃɺؒҧͬͨίʔυ͕ࠞೖ͠ɺ໰
    ୊͕ى͖Δɻ
    ϨΩγΧϧ߆ଋ
    ίϯύΠϥΛۦ࢖ͯ͠߆ଋΛڲਖ਼ɻ
    ϨΩγΧϧείʔϓΛ࢖ͬͯద੾ͳσʔλͱฒߦॲཧͷϓϦϛςΟϒ͚ͩ
    Λෳ਺ͷϓϩηε͕࢖͑ΔΑ͏ʹެ։͢Δ͜ͱΛࢦ͢ɻ
    ˠ͜ΕʹΑͬͯޡͬͨॲཧΛॻ͍ͯ͠·͏͜ͱΛෆՄೳʹɻ

    View Slide

  29. HPMBOHUPLZP
    ϨΩγΧϧ߆ଋ

    View Slide

  30. HPMBOHUPLZP
    (PͰͷฒߦॲཧύλʔϯ
    ߆ଋ
    GPSTFMFDUϧʔϓ
    ΰϧʔνϯϦʔΫΛආ͚Δ
    ύΠϓϥΠϯ
    ϑΝϯΞ΢τɺϑΝϯΠϯ

    View Slide

  31. HPMBOHUPLZP
    GPSTFMFDUϧʔϓ
    νϟωϧ͔Β܁Γฦ͠ͷม਺Λૹग़͢Δ
    ܁Γฦ͕͠Մೳͳ΋ͷΛνϟωϧ্ͷม਺
    ʹม׵ɻ
    ఀࢭγάφϧΛ଴ͭແݶϧʔϓ
    ֎෦͔Βఀࢭͷ໋ྩ͕དྷΔ·Ͱແݶʹ܁Γ
    ฦ͢ΰϧʔνϯΛ࡞Δɻ
    EPOFνϟωϧ͕ด͡ΒΕ͍ͯͳ͚Ε͹ɺ
    TFMFDUจΛൈ͚ͯGPSϧʔϓຊମͷ࢒ΓͷॲཧΛ
    ଓ͚Δɻ

    View Slide

  32. HPMBOHUPLZP
    (PͰͷฒߦॲཧύλʔϯ
    ߆ଋ
    GPSTFMFDUϧʔϓ
    ΰϧʔνϯϦʔΫΛආ͚Δ
    ύΠϓϥΠϯ
    ϑΝϯΞ΢τɺϑΝϯΠϯ

    View Slide

  33. HPMBOHUPLZP
    ΰϧʔνϯϦʔΫΛආ͚Δ
    ΰϧʔνϯͷੜ੒͸ίετ͕খ͍͕͞ɺੜ͖͍ͯΔݶΓ͸($͞Εͣ࢒ͬ
    ͯ͠·͏ɻ
    ˠ࣮֬ʹॲཧ͍ͯ͘͜͠ͱ͕ඞཁ
    ΰϧʔνϯ͕ऴྃʹࢸΔ·ͰͷྲྀΕ
    ΰϧʔνϯ͕ॲཧΛ׬ྃ͢Δ৔߹
    ճ෮Ͱ͖ͳ͍ΤϥʔʹΑΓॲཧΛଓ͚ΒΕͳ͍৔߹
    ఀࢭ͢ΔΑ͏ʹ໋ྩ͞Εͨ৔߹
    ࠷ॳͷͭͷྲྀΕ͸جຊతʹ͸࣮ߦ͞ΕΔɻ
    ͭΊͷΩϟϯηϧॲཧʹؔͯ͠͸ɺ਌ͷΰϧʔνϯ͕ਖ਼͘͠ճऩ͢Δɻ

    View Slide

  34. HPMBOHUPLZP
    ΰϧʔνϯϦʔΫΛආ͚Δ

    View Slide

  35. HPMBOHUPLZP
    (PͰͷฒߦॲཧύλʔϯ
    ߆ଋ
    GPSTFMFDUϧʔϓ
    ΰϧʔνϯϦʔΫΛආ͚Δ
    ύΠϓϥΠϯ
    ϑΝϯΞ΢τɺϑΝϯΠϯ

    View Slide

  36. HPMBOHUPLZP
    ύΠϓϥΠϯ
    γεςϜͷந৅Խʹ࢖͑Δಓ۩ͷͭɻ
    σʔλΛड͚औͬͯɺԿΒ͔ͷॲཧΛߦͳͬͯɺͲ͔͜ʹ౉͢Ұ࿈ͷ࡞
    ۀ
    ˠ͜ΕΒͷૢ࡞ΛεςʔδͱݺͿ
    ύΠϓϥΠϯΛ࢖͏͜ͱͰɺ֤εςʔδͰͷݒ೦ࣄ߲Λ੾Γ෼͚ΒΕɺ
    ͜Ε͸ଟ͘ͷར఺Λ΋ͨΒ͢ɻ
    ֤εςʔδΛಠཱͯ͠मਖ਼͢Δ͜ͱ͕Ͱ͖ɺεςʔδಉ࢜ͷ૊Έ߹Θͤ
    ํΛεςʔδͷमਖ਼ͱ͸ಠཱͯ͠มߋ͕Մೳɻ
    ֤εςʔδͰͷॲཧΛ্ྲྀ΍Լྲྀͷεςʔδͱฒߦʹߦ͑Δɻ

    View Slide

  37. HPMBOHUPLZP
    ύΠϓϥΠϯ

    View Slide

  38. HPMBOHUPLZP
    ύΠϓϥΠϯ
    ύΠϓϥΠϯεςʔδͷੑ࣭
    εςʔδ͸ड͚औΔ΋ͷͱฦ͢΋ͷ͕ಉ͡ܕͰ͋Δ
    εςʔδ͸Ҿ͖ճͤΔΑ͏ʹ۩ମԽ͞Εͯͳ͚Ε͹ͳΒͳ͍
    ˠੑ࣭Λຬ͍ͨͯͨ͠ͷͰɺ૊Έ߹ΘͤΔ͜ͱ͕Ͱ͖ͨɻ

    View Slide

  39. HPMBOHUPLZP
    ύΠϓϥΠϯ

    View Slide

  40. HPMBOHUPLZP
    (PͰͷฒߦॲཧύλʔϯ
    ߆ଋ
    GPSTFMFDUϧʔϓ
    ΰϧʔνϯϦʔΫΛආ͚Δ
    ύΠϓϥΠϯ
    ϑΝϯΞ΢τϑΝϯΠϯ

    View Slide

  41. HPMBOHUPLZP
    ϑΝϯΞ΢τ
    ύΠϓϥΠϯ಺ͷ͋ΔεςʔδͰಛʹܭࢉྔ͕େ͖͘ͳͬͨ৔߹
    ্ྲྀͷεςʔδ͸ɺͦͷܭࢉྔ͕େ͖͍εςʔδͷॲཧ͕ऴΘΔ
    ͷΛ଴ػͯ͠ϒϩοΫ͞Εͯ͠·͏ɻ
    ˠෳ਺ͷΰϧʔνϯΛ࢖্ͬͯྲྀͷεςʔδ͔ΒͷೖྗΛฒྻʹ
    ஋ΛҾͬுͬͯ͘ΔͨΊʹɺෳ਺ͷΰϧʔνϯΛىಈ͢Δϓϩη
    ε

    View Slide

  42. HPMBOHUPLZP
    ϑΝϯΞ΢τ
    εςʔδ͕࣍ͷ৚݅ͷ྆ํʹ߹க͢Δ৔߹ʹ͸ϑΝϯΞ΢τͷར
    ༻Λݕ౼ͯ͠ΈΔ
    ͦͷεςʔδ͕ΑΓલͷܭࢉ݁Ռʹґଘ͍ͯ͠ͳ͍
    ࣮ߦ͕௕࣌ؒʹٴͿ
    ಛʹॱෆಉੜ͸ॏཁɻ
    ˠͲͷεςʔδ͕ฒߦॲཧʹͳ͍ͬͯΔ͔ɺεςʔδ͕Ͳͷॱ൪
    Ͱ࣮ߦ͞ΕΔ͔ɺͲͷॱ൪Ͱ஋͕ฦ͞ΕΔ͔ʹอূ͕ͳ͍ͨΊ
    ϑΝϯΞ΢τͤ͞Δखॱ͸ɺ֘౰εςʔδΛෳ਺ىಈ͢Δ͚ͩ

    View Slide

  43. HPMBOHUPLZP
    ϑΝϯΠϯ
    ෳ਺ͷσʔλͷετϦʔϜΛɺ୯ҰͷετϦʔϜʹ౷߹

    View Slide

  44. HPMBOHUPLZP
    ϑΝϯΞ΢τϑΝϯΠϯ

    View Slide

  45. HPMBOHUPLZP
    ·ͱΊ
    ฒߦॲཧʹ͓͍ͯؾΛ͚ͭͳ͍ͱ͍͚ͳ͍؍఺͕੔ཧ͞Εͨ
    DIBOOFM͸ॲཧ଴͕ͪ͋ΔͨΊɺଞΰϧʔνϯͷ੍ޚॲཧͷฒ
    ྻԽʹ࢖͑Δ
    ݱࡏ͸DPOUFYU͕͋ΔͷͰɺEPOFDIBOͱ͸ҧ͏ϝϦοτ΋ཧ
    ղ͓ͯ͘͠ඞཁ͋Γ

    View Slide