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

echoサーバーを書いてI/Oと仲良くなる話

06bfc3de5c1b439d2081b8a1f196afd7?s=47 bati11
April 07, 2017

 echoサーバーを書いてI/Oと仲良くなる話

06bfc3de5c1b439d2081b8a1f196afd7?s=128

bati11

April 07, 2017
Tweet

Transcript

  1. FDIPαʔόʔΛॻ͍ͯ *0ͱ஥ྑ͘ͳΔ࿩ 2017/3/25 Yokohama North Meetup ˌ5 #yokohama_north bati (@bati11_)

  2. *0ͷ࿩

  3. *0ͷ࿩ • งғؾ͔͠௫Ίͯͳͯͪ͘ΌΜͱ෼͔ͬͯͳ͔ͬͨ • άάΔͱ৭ʑग़ͯ͘Δ • ৭ʑग़ͯ͘Δ͚Ͳɺେମ6/*9ωοτϫʔΫϓϩάϥϛϯάΛ ࢀরͯ͠Δ • IUUQTXXXBNB[PODPKQ6/*9ωοτϫʔΫϓϩάϥϛϯά7PMωοτϫʔ

    Ϋ"1*ιέοτͱ95*8ϦνϟʔυεςΟʔϰϯεEQ • ಡΜͰΈͨ • ϒϩάʹ΋·ͱΊͨ • IUUQCBUJCMPHIBUFOBCMPHDPNFOUSZ
  4. *0ͷ࿩ • ͭͷ*0Ϟσϧ • ϒϩοΩϯά*0 • ϊϯϒϩοΩϯά*0 • *0ଟॏ •

    γάφϧۦಈ*0 • ඇಉظ*0
  5. *0ͷ࿩ • ͭͷ*0Ϟσϧ • ϒϩοΩϯά*0 • ϊϯϒϩοΩϯά*0 • *0ଟॏ •

    γάφϧۦಈ*0 • ඇಉظ*0 今回は話しない
  6. *0ͷ࿩ • σʔλಡΈࠐΈ࣌ͷ*0͸ɺͭͷεςοϓ͔Β੒Δ • σʔλΛ଴ͭ • Χʔωϧ͔ΒϢʔβʔϓϩάϥϜ΁σʔλΛίϐʔ ͢Δ

  7. σʔλ଴ͪ Χʔωϧ͔Β Ϣʔβʔ΁ σʔλΛίϐʔ ىಈ ௨஌ ىಈ ׬ྃ ϒϩοΫ ݕࠪ

    ४උ׬ྃ ىಈ ׬ྃ ϒϩοΫ ϒϩοΫ ϒϩοΩϯά *0 ϊϯ ϒϩοΩϯά *0 *0ଟॏ ඇಉظ*0 ݕࠪ ׬ྃ ݕࠪ ݕࠪ ݕࠪ ϒϩοΫ ݕࠪ
  8. • ಉظ*0ૢ࡞ͱඇಉظ*0ૢ࡞ͷ࿩ *0ͷ࿩ ಉظI/Oૢ࡞Ͱ͸ɺ͜ΕΛཁٻͨ͠ϓϩηε͸ ཁٻͨ͠I/Oૢ࡞͕׬ྃ͢Δ·ͰϒϩοΫ͢Δ ඇಉظI/Oૢ࡞Ͱ͸ɺ͜ΕΛཁٻͨ͠ϓϩηε ͸ϒϩοΫ͠ͳ͍ UNIXωοτϫʔΩϯάϓϩάϥϛϯά ୈ2൛ Vol.1

  9. σʔλ଴ͪ Χʔωϧ͔Β Ϣʔβʔ΁ σʔλΛίϐʔ ىಈ ௨஌ ىಈ ׬ྃ ϒϩοΫ ݕࠪ

    ४උ׬ྃ ىಈ ׬ྃ ϒϩοΫ ϒϩοΫ ϒϩοΩϯά *0 ϊϯ ϒϩοΩϯά *0 *0ଟॏ ඇಉظ*0 ݕࠪ ׬ྃ ݕࠪ ݕࠪ ݕࠪ ϒϩοΫ ݕࠪ 同期I/O操作
  10. σʔλ଴ͪ Χʔωϧ͔Β Ϣʔβʔ΁ σʔλΛίϐʔ ىಈ ௨஌ ىಈ ׬ྃ ϒϩοΫ ݕࠪ

    ४උ׬ྃ ىಈ ׬ྃ ϒϩοΫ ϒϩοΫ ϒϩοΩϯά *0 ϊϯ ϒϩοΩϯά *0 *0ଟॏ ඇಉظ*0 ݕࠪ ׬ྃ ݕࠪ ݕࠪ ݕࠪ ϒϩοΫ ݕࠪ 非同期I/O操作
  11. FDIPαʔόʔ

  12. FDIPαʔόʔ • ΫϥΠΞϯτ͔ΒೖྗΛड͚෇͚ͯɺͦͷ··ฦ͢ αʔόʔ • ίʔυIUUQTHJUIVCDPNCBUJPSFOPFDIPTFSWFSCMPCNBTUFSTSD TJOHMF@FDIP@TFSWFSD • σϞ

  13. σʔλ଴ͪ Χʔωϧ͔Β Ϣʔβʔ΁ σʔλΛίϐʔ ىಈ ௨஌ ىಈ ׬ྃ ϒϩοΫ ݕࠪ

    ४උ׬ྃ ىಈ ׬ྃ ϒϩοΫ ϒϩοΫ ϒϩοΩϯά *0 ϊϯ ϒϩοΩϯά *0 *0ଟॏ ඇಉظ*0 ݕࠪ ׬ྃ ݕࠪ ݕࠪ ݕࠪ ϒϩοΫ ݕࠪ
  14. FDIPαʔόʔ • SFBEͰϒϩοΫͯ͠Δ • ҎԼͷͭͷํ๏Ͱରࡦͯ͠ΈΔ • ϒϩοΩϯά*0ͷ··Ϛϧνϓϩηεʹ͢Δ • ϊϯϒϩοΩϯά*0Λ࢖͏ •

    *0ଟॏΛ࢖͏
  15. ϒϩοΩϯά*0ͷ·· Ϛϧνϓϩηεʹ͢Δ

  16. ϒϩοΩϯά*0ͷ··Ϛϧνϓϩηεʹ͢Δ • GPSLΛ࢖ͬͯϚϧνϓϩηεʢϚϧνεϨουͰ΋ ͍͍͚Ͳ$ݴޠͰϚϧνεϨου෼͔Βͳ͍ʣ • αʔόʔͷϓϩηεͭͰɺͭͷΫϥΠΞϯτʹ ରԠ͢Δ • ίʔυIUUQTHJUIVCDPNCBUJPSFOPFDIPTFSWFSCMPCNBTUFSTSD GPSL@FDIP@TFSWFSD

    • σϞ
  17. σʔλ଴ͪ Χʔωϧ͔Β Ϣʔβʔ΁ σʔλΛίϐʔ ىಈ ௨஌ ىಈ ׬ྃ ϒϩοΫ ݕࠪ

    ४උ׬ྃ ىಈ ׬ྃ ϒϩοΫ ϒϩοΫ ϒϩοΩϯά *0 ϊϯ ϒϩοΩϯά *0 *0ଟॏ ඇಉظ*0 ݕࠪ ׬ྃ ݕࠪ ݕࠪ ݕࠪ ϒϩοΫ ݕࠪ
  18. ϊϯϒϩοΩϯά*0Λ࢖͏

  19. ϊϯϒϩοΩϯά*0Λ࢖͏ • ιέοτΛϊϯϒϩοΩϯάʹ͓ͯ͘͠ • σʔλಡΈࠐΈ࣌ʹɺσʔλ͕౸ୡ͍ͯ͠ͳ͍৔߹͸ϒ ϩοΫͤͣʹ͙͢ʹΤϥʔ஋͕ฦͬͯ͘Δ • αʔόʔͷϓϩηεͭͰɺෳ਺ͷΫϥΠΞϯτʹରԠ ͢Δ •

    ίʔυIUUQTHJUIVCDPNCBUJPSFOPFDIPTFSWFSCMPCNBTUFSTSD OPO@CMPDLJOH@FDIP@TFSWFSD • σϞ
  20. σʔλ଴ͪ Χʔωϧ͔Β Ϣʔβʔ΁ σʔλΛίϐʔ ىಈ ௨஌ ىಈ ׬ྃ ϒϩοΫ ݕࠪ

    ४උ׬ྃ ىಈ ׬ྃ ϒϩοΫ ϒϩοΫ ϒϩοΩϯά *0 ϊϯ ϒϩοΩϯά *0 *0ଟॏ ඇಉظ*0 ݕࠪ ׬ྃ ݕࠪ ݕࠪ ݕࠪ ϒϩοΫ ݕࠪ
  21. ϊϯϒϩοΩϯά*0Λ࢖͏ • ιέοτΛ؅ཧ͢Δͷਏ͍ • ϒϩοΫ͠ͳ͍ͷͰɺσʔλΛ଴ͬͯΔ͚ͩͳͷʹ ϓϩάϥϜ͕ϧʔϓ͠ଓ͚ͯ͠·͍$16͕ແବʹͳ Δ • ϓϩηεͰಈ͍͍ͯΔͷͰɺଞͷ*0ͳͲͰϒϩο Ϋ͠ͳ͍Α͏ʹ͠ͳͯ͘͸͍͚ͳ͍

  22. *0ଟॏΛ࢖͏

  23. *0ଟॏΛ࢖͏ • ෳ਺ͷιέοτʹରͯ͠σʔλΛ଴ͭ • σʔλͷ౸ୡ͕͋ͬͨΒΧʔωϧ͔Βͷ௨஌Λड͚औΓɺ ͦͷޙσʔλͷಡΈऔΓΛߦ͏ • αʔόʔͷϓϩηεͭͰɺෳ਺ͷΫϥΠΞϯτʹରԠ ͢Δ •

    ίʔυIUUQTHJUIVCDPNCBUJPSFOPFDIPTFSWFSCMPCNBTUFSTSD FQPMM@FDIP@TFSWFSD • σϞ
  24. σʔλ଴ͪ Χʔωϧ͔Β Ϣʔβʔ΁ σʔλΛίϐʔ ىಈ ௨஌ ىಈ ׬ྃ ϒϩοΫ ݕࠪ

    ४උ׬ྃ ىಈ ׬ྃ ϒϩοΫ ϒϩοΫ ϒϩοΩϯά *0 ϊϯ ϒϩοΩϯά *0 *0ଟॏ ඇಉظ*0 ݕࠪ ׬ྃ ݕࠪ ݕࠪ ݕࠪ ϒϩοΫ ݕࠪ
  25. *0ଟॏΛ࢖͏ • *0ଟॏͷγεςϜίʔϧ͸FQPMMҎ֎ʹ΋ز͔ͭ͋ ΔʢTFMFDU΍QPMMͳͲʣ • FQPMM͸-JOVYґଘɻϓϥοτϑΥʔϜґଘΛٵऩ͠ ͨϥΠϒϥϦͱͯ͠MJCFW͕͋Δ

  26. *0ଟॏΛ࢖͏ • ϓϩηεͰಈ͍͍ͯΔͷͰɺଞͷ*0ͳͲͰϒϩο Ϋ͠ͳ͍Α͏ʹ͠ͳͯ͘͸͍͚ͳ͍ • FQPMM͔Β௨஌͕དྷͯ΋ಡΈࠐΈͰϒϩοΫ͢Δ Մೳੑ͋Γ • ॻ͖ࠐΈ࣌ͷϒϩοΫ •

    ϑΝΠϧಡΈࠐΈ΍ଞͷ௨৴ʹΑΔϒϩοΫ
  27. ੈͷதͷαʔόʔ

  28. ੈͷதͷαʔόʔ • /PEFKT͸ݩʑ͸MJCFW MJCFJPʢεϨουΛ࢖ͬͯඇ ಉظ*0ͷΑ͏ʹৼ෣ͬͯ͘ΕΔϥΠϒϥϦʣΛ࢖ͬ ͯͯɺMJCVW΁มΘͬͨ • ଞͷαʔόʔ͸ʁ • ࢀߟࢿྉ

    • ϚϧνίΞ࣌୅ͷαʔόϓϩάϥϛϯάͱ )BTLFMMIUUQXXXJJKBEKQDPNQBOZEFWFMPQNFOUUFDI UFDIXFFLQEGUX@@IBTLFMMQEG
  29. ·ͱΊ

  30. ·ͱΊ • 6/*9ωοτϫʔΫϓϩάϥϛϯάɺࡉ͘ॻ͍ͯ͋ͬ ͯྑ͔ͬͨʢ*0ͷ࿩͸ຊͷҰ෦Ͱ͢ʣ • ωοτϫʔΫͷ஌ࣝͱϓϩάϥϛϯά͸ɺ೴಺Ͱผ ډ͍ͯ͠Δײ͚֮ͩͬͨͲɺίʔυॻ͍ͨΒ஥ྑ͘ ͳΕͨ