Slide 1

Slide 1 text

ୈ22ষ
 Object Poolύλʔϯ ՝୊ਤॻ:
 ΦϒδΣΫτࢦ޲ͷ͜͜Ζ: σβΠϯύλʔϯͱͱ΋ʹֶͿ

Slide 2

Slide 2 text

ᴷେ·͔ʹݴ͑͹ɺΦϒδΣΫτϓʔϧύλʔϯ͸ɺ࢖͏΋ͷΛ ܾ·ͬͨ਺͚ͩɺݴ͍׵͑Ε͹ϓʔϧΛɺ࡞Δํ๏Ͱ͢ɻ GoݴޠʹΑΔฒߦॲཧ P59-60

Slide 3

Slide 3 text

ͳΜͰͦΜͳࣄ͍ͨ͠ͷʁ • ΦϒδΣΫτͷੜ੒ίετ͕ߴ͘ɺ͋Μ·Γੜ੒ͨ͘͠Ͷʙͱ͍͏͕࣌͋ Δ(࡞Γஔ͖ˍ࢖͍·Θ͍ͨ͠) • ͜Ε͸SingletonͱࣅͨಈػͰ͢Ͷ • ੜ੒͞ΕΔ਺ʹ্ݶΛઃ͚͍ͨͳʙͱ͍͏͕࣌͋Δ(Ϧιʔε؅ཧΛγϏΞ) • (ʮੜ੒࣌ʹϝϞϦΛXXX KB֬อ͢ΔΑʯͬͯΦϒδΣΫτ͕ແݶʹ࡞ ΒΕͨΒࠔΔΜ͡Όɺͱ͔Ͱ) • ৽͘͠࡞Βͳ͍Ͱɺۭ͖͕ग़Δ·Ͱ଴ͬͯཉ͍͠ʂ • ओʹඇಉظॲཧΛѻ͏έʔεʹͯ༗༻

Slide 4

Slide 4 text

Ͳ͏΍Δͷʁ • PoolΫϥε(Manager)Λͭ͘Δ • Pool͸ • ࢖͑ΔΦϒδΣΫτ(Ϧιʔε)Λɺۭ͖ঢ়ଶ͕Θ͔Δঢ়ଶ ͰஷΊΔ • ཁٻ͞ΕͨΒۭ͍͍ͯΔΦϒδΣΫτΛฦ͢ • ࢖͍ऴΘͬͨΒΦϒδΣΫτΛฦͯ͠΋Β͏ • ར༻ऀ͸ɺΦϒδΣΫτͷऔಘΛPoolܦ༝Ͱߦ͏Α͏ʹ͢Δ

Slide 5

Slide 5 text

Ϧιʔεͩ͘ ͍͞ʂ ͍͋Αʂ ͭऔΓग़͢ Α Ͳ͏ͧʙ ࢖͍ऴΘͬ ͨΑʂ ͍͋Αʂ ฦ͖ͬͯͨ Α

Slide 6

Slide 6 text

Ϧιʔεͩ͘ ͍͞ʂ ͳ͍ͷͩ Θʂʂ ͭऔΓग़͢ Α Ͳ͏ͧʙ ଴ͬͯͶʂ ଴ͬͯͶʂ ଴ͬͯͶʂ ଴ͬͯͶʂ ଴ͬͯͶʂ ଴ͬͯͶʂ ,*5"ʂʂ ଴ͬͯͶʂ ࢖͍ऴΘͬ ͨΑʂ

Slide 7

Slide 7 text

Pool͕ͳ͍ͱͲ͏ͳΔͷʁ • ར༻ऀͷ਺͚ͩʮੜ੒ʯͷॲཧ͕૸Δʂ • ੜ੒1ͭ1ͭʹύϫʔ͕ཁΔ • ͦͷ෼͚ͩࣗ਎΍઀ଓઌͷϦιʔεΛফඅ͢Δ • ͍͡ΘΔͳ؍఺: ʮϦιʔεͷফඅঢ়گʯΛ؂ࢹͯ͠ɺ଍Γ ͳ͔ͬͨΒͲ͏͜͏͢ΔʙΛ͢Ε͹Pool͠ͳ͍͍ͯ͘ʁ • ੜ੒ʹ࢖͏ύϫʔ͸มΘΒͳ͍ͷͰ໰୊͕࢒Δ • GCΛ࢖͍ͬͯΔͱɺʮෆඞཁʹͳͬͨ(ղ์͞Εͨ)ʯ࣌ ఺ͰɺϦιʔε͕࡟আ͞ΕΔ • ʮ࢖͍ऴΘͬͯ΋ղ์͠ͳ͍ʯΑ͏ʹ͢Δ޻෉͕͍Δ ݸ਺্ݶͷ͋ΔϦιʔεΛ࢖͍·Θ͠ɺۭ͖͕ͳ͚Ε͹଴ͨͤΔྫ →

Slide 8

Slide 8 text

ຊͷ࿩ʹ໭Γ·͢

Slide 9

Slide 9 text

࡞ͬͯͶ˒ • ωοτϫʔΫΛ௨ͯ͡ΞϨίϨ͢ΔγεςϜ • (TCP/IPܦ༝ͰϝΠϯϑϨʔϜͱ௨৴͢Δ • ΫϥΠΞϯτ -> [ίίΛ࡞Δ] -> ϝΠϯϑϨʔϜ • ϦΫΤετ͝ͱͷԠ౴͕࣌ؒ৳ͼͯ΋ɺಉ࣌ॲཧ਺Λଟ͘ ͍ͨ͠ • ໰୊: ϝΠϯϑϨʔϜ΁ͷ઀ଓΛԿݸ։͚ΔΜͩɾɾɾʁ

Slide 10

Slide 10 text

͜͏΍ͬͯ࡞Ζ͏˒ • ͱΓ͋͑ͣʮܨ͍Ͱɺ΍ΓͱΓͯ͠ɺ໭͖ͬͯͨσʔλΛ ॲཧ͢ΔʯΈ͍ͨͳ෦෼Λ࡞ͬͪΌ͍͍ͨ • ΦϒδΣΫτ(઀ଓ)ͷ্ݶ͸ઈରʹઃ͚Δʂʂ • ʮԿݸ։͚Δ͔෼͔Βͳ͍ʯ͔ΒɺʮޙͰ؆୯ʹม͑ΒΕ ΔΑ͏ʹʯ͓ͯ͘͠ ➡ʮΘ͔Βͳ͍ॴΛޙճ͠ʹ͓͚ͯ͠Δ(൑அΛ஗Ԇͤ͞Δઃ ܭߦҝ)ʯΛ͓͚ͯ͠͹ɺ։ൃऀ΋҆৺҆શͬͯϫέʂ

Slide 11

Slide 11 text

ͦ͜ͰObject PoolͰ͢Α ઀ଓΦϒδΣΫτ(Port)ͱɺ ͦΕΛ؅ཧ͢Δϓʔϧ(PortManager)Λ࡞੒ͨ͠ • PortManager͸άϩʔόϧʹ1ݸ͚ͩଘࡏ͢Δ • Singletonͷར༻ • PortManager͸ɺPortͷੜ੒ɾ؅ཧΛ୲౰ • ੜ੒ɾฦ٫ɾ(ҟৗ࣌ͷ)ഁغͳͲ

Slide 12

Slide 12 text

Poolͷ੹຿ͱClientͷ੹຿ • Clientͷؔ৺͸ʮ࢖͑ΔPortΛΑͤ͜ʯͱ͍͏఺ • ʮੜ੒(factory)ʯΛPoolʹ೚ͤΔͱ͍͏͜ͱ͸ɺੜ੒෺͕ʮ࢖ ͑Δʯঢ়ଶʹ͋Δͱ͍͏͜ͱ·ͰPool͕؅ཧग़དྷΔͱ͍͏͜ͱ • ʮ࡞Δ͜ͱʯͰ͸ͳͯ͘ʮ४උ͠ɺఏڙ͢Δ͜ͱʯ͕੹຿ • ʮବ໨ʹͳͬͨPort͸ೖΕସ͑Δʯͱ͔ɻ • Client͸ʮ࢖͑ΔͷΛཁٻ͠ଓ͚ͯɺࣗΒͷ໨తΛୡ੒͢Δʯ ͚ͩͰΑ͍

Slide 13

Slide 13 text

੹຿ͱ։ൃ • ʮ੹຿ͷ෼཭ʯʮந৅ʹΑΔઃܭʯʮΧϓηϧԽʯ͕࣮ݱ͞Ε Δ͜ͱͰɺʮ۩ମͷ൑அʯΛޙճ͠ʹͰ͖Δ • ௨৴࣌Τϥʔ͸Ͳ͏ѻ͓͏ɾɾʁͱ͔͸΄΅ؾʹͤͣɺͻͱ ·ͣʮ௨৴͕Ͱ͖ΔલఏʯͰ(Clientͷ)ϩδοΫͷ࣮૷ΛਐΊ ΒΕΔ • ʮ͍·ؾʹ͠ͳͯ͘ྑ͍͜ͱʯ͸ʮ۩ମʯͰ͋Δ֖વੑ͕ߴ͍ɻ • ۩ମ΍ৄࡉͬͯ͜ͱ͸ʮมಈੑʯͰ͋Δ֖વੑ͕ߴ͍ɻ • ʮมಈੑΛΧϓηϧԽͤΑʯͱ͍͏ઃܭ