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

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

E63ab48ccdf309256f858dd2424d8b03?s=47 abemotion
February 07, 2020

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

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

E63ab48ccdf309256f858dd2424d8b03?s=128

abemotion

February 07, 2020
Tweet

Transcript

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

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

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

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

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

    3BJMT H31$ H31$ "1*(BUFXBZ 1SPpMF4FSWJDF 1SPpMF8FC
  6. HPMBOHUPLZP γεςϜߏ੒ /VYU&YQSFTT (P H31$ H31$ "1*(BUFXBZ 3BJMT "1*4FSWJDF 1SPpMF8FC

    3BJMT 1SPpMF4FSWJDF 3&45 ˠฒߦॲཧΛ࢖͍͍ͨཁ͕݅ग़͖ͯͨ
  7. HPMBOHUPLZP ηογϣϯ಺༰ ฒߦॲཧಋೖʹ͋ͨͬͯɺʰ(PݴޠʹΑΔฒߦॲཧʱΛ ಡΜͰɺ಺༰ʹ͍ͭͯҰ෦·ͱΊͯΈ·ͨ͠ʂ ʰ(PݴޠʹΑΔฒߦॲཧʱ *4#/

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

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

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

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

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

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

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

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

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

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

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

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

    C B  ࠷ॳͷؔ਺ݺͼग़͠ͰɺBΛϩοΫͯ͠ɺͦͷޙCΛϩοΫ͢Δͱ͢Δɻ ͔͠͠ҰํͰɺճ໨ͷؔ਺ݺͼग़͠Ͱ͸ɺCΛϩοΫͯ͠ɺͦͷޙʹBΛϩο Ϋ͠Α͏ͱ͢Δ ˠ྆ํͷΰϧʔνϯ͸͓ޓ͍ʹແݶʹ଴ͪ߹͏
  20. HPMBOHUPLZP DPGGNBO৚݅ σουϩοΫ͕ൃੜ͢ΔͨΊʹଘࡏ͠ͳ͚Ε͹͍͚ͳ͍৚݅ ૬ޓഉଞ ͋Δฒߦϓϩηε͕Ϧιʔεʹରͯ͠ഉଞతͳݖརΛͲͷ࣌఺ʹ͓͍ͯ΋อ͍࣋ͯ͠Δ ৚݅଴ͪ ͋Δฒߦϓϩηε͸Ϧιʔεͷอ࣋ͱ௥ՃͷϦιʔε଴ͪΛಉ࣌ʹߦΘͳ͚Ε͹ͳΒͳ͍ ԣऔΓෆՄ ͋ΔฒߦϓϩηεʹΑͬͯอ࣋͞Ε͍ͯΔϦιʔε͸ɺͦͷϓϩηεʹΑͬͯͷΈղ์͞ΕΔ ॥؀଴ͪ

    ͋Δฒߦϓϩηε 1@ ͸ɺଞͷ࿈ͳ͍ͬͯΔ͋Δฒߦϓϩηε 1@ Λ଴ͨͳ͚Ε͹ͳΒͳ͍ɻ ͦͯ͠ 1@ ͸ 1@ Λ଴͍ͬͯΔɻ ˠ͜ΕΒͷ๏ଇ͸σουϩοΫͷ༧๷ʹ΋໾ཱͭɻͲΕ͔ͭͰ΋ਅʹͳΒͳ͚Ε͹ྑ͍
  21. HPMBOHUPLZP ͳͥฒߦॲཧ͕೉͍͠ͷ͔ ڝ߹ঢ়ଶ ΞτϛοΫੑ ϝϞϦΞΫηεಉظ σουϩοΫ Ϧιʔεރׇ ฒߦॲཧͷ҆શੑΛݟۃΊΔ

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

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

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

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

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

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

  28. HPMBOHUPLZP ߆ଋ ΞυϗοΫ߆ଋ ߆ଋΛن໿نଇ ίϛϡχςΟɺ৬৔ɺίʔυϕʔεʹΑͬͯࢦఆ  ˠकΓଓ͚Δͷ͸೉͍͠ ଟ͘ͷਓ͕खΛೖΕΔೲظͷഭͬͨ։ൃɺؒҧͬͨίʔυ͕ࠞೖ͠ɺ໰ ୊͕ى͖Δɻ ϨΩγΧϧ߆ଋ

    ίϯύΠϥΛۦ࢖ͯ͠߆ଋΛڲਖ਼ɻ ϨΩγΧϧείʔϓΛ࢖ͬͯద੾ͳσʔλͱฒߦॲཧͷϓϦϛςΟϒ͚ͩ Λෳ਺ͷϓϩηε͕࢖͑ΔΑ͏ʹެ։͢Δ͜ͱΛࢦ͢ɻ ˠ͜ΕʹΑͬͯޡͬͨॲཧΛॻ͍ͯ͠·͏͜ͱΛෆՄೳʹɻ
  29. HPMBOHUPLZP ϨΩγΧϧ߆ଋ

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

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

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

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

    ͭΊͷΩϟϯηϧॲཧʹؔͯ͠͸ɺ਌ͷΰϧʔνϯ͕ਖ਼͘͠ճऩ͢Δɻ
  34. HPMBOHUPLZP ΰϧʔνϯϦʔΫΛආ͚Δ

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

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

    ֤εςʔδͰͷॲཧΛ্ྲྀ΍Լྲྀͷεςʔδͱฒߦʹߦ͑Δɻ
  37. HPMBOHUPLZP ύΠϓϥΠϯ

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

  39. HPMBOHUPLZP ύΠϓϥΠϯ

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

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

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

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

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

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