λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ“± Mobile/iOS

[iOS - Swift] λ™μ‹œμ„± ν”„λ‘œκ·Έλž˜λ°, 비동기성 ν”„λ‘œκ·Έλž˜λ°, 병렬성 ν”„λ‘œκ·Έλž˜λ°

λ™μ‹œμ„± ν”„λ‘œκ·Έλž˜λ°κ³Ό 비동기 ν”„λ‘œκ·Έλž˜λ°μ— λŒ€ν•΄ μ•ŒκΈ° 전에 …….. μ•Œκ³  κ°€μ•Ό ν•  것듀이 μžˆλ‹€μš”

 

ν”„λ‘œμ„Έμ„œ

  • ν”„λ‘œμ„Έμ„œλŠ” 컴퓨터 λ‚΄μ—μ„œ ν”„λ‘œκ·Έλž¨μ„ μˆ˜ν–‰ν•˜λŠ” ν•˜λ“œμ›¨μ–΄ μœ λ‹›μ΄λ‹€.
  • κ°€μž₯ λŒ€ν‘œμ μœΌλ‘œ μ€‘μ•™μ²˜λ¦¬μž₯치(CPU)κ°€ 이에 μ†ν•˜κ³  μžˆλ‹€.
  • πŸ’» - πŸ’ΎπŸ’ΎπŸ’ΎπŸ’ΎπŸ’Ύ  ⇒ ν•œ 컴퓨터가 μ—¬λŸ¬ 개의 ν”„λ‘œμ„Έμ„œ 가짐 ⇒ λ©€ν‹° ν”„λ‘œμ„Έμ„œ
  • πŸ’» - πŸ’ΎπŸ’Ύ  ⇒ ν•œ 컴퓨터에 두 개의 ν”„λ‘œμ„Έμ„œ ⇒ λ“€μ–Ό ν”„λ‘œμ„Έμ„œ

μ½”μ–΄

  • μ—°μ‚°νšŒλ‘œ

ν”„λ‘œκ·Έλž¨κ³Ό ν”„λ‘œμ„ΈμŠ€

  • ν”„λ‘œκ·Έλž¨μ€ 일반적으둜 보쑰기얡μž₯μΉ˜μ— μ €μž₯된 μ‹€ν–‰μ½”λ“œλ₯Ό λ§ν•œλ‹€.
  • ν”„λ‘œμ„ΈμŠ€λŠ” ν”„λ‘œκ·Έλž¨μ„ κ΅¬λ™ν•˜μ—¬ ν”„λ‘œκ·Έλž¨ μžμ²΄μ™€ ν”„λ‘œκ·Έλž¨μ˜ μƒνƒœκ°€ λ©”λͺ¨λ¦¬μ—μ„œ μ‹€ν–‰λ˜λŠ” μž‘μ—… λ‹¨μœ„λ₯Ό λ§ν•œλ‹€.

μŠ€λ ˆλ“œ

  • μŠ€λ ˆλ“œλŠ” ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μ‹€ν–‰λ˜λŠ” μž‘μ—…νλ¦„μ˜ λ‹¨μœ„λ₯Ό λ§ν•œλ‹€.
  • 보톡 ν•œ ν”„λ‘œμ„ΈμŠ€λŠ” ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œλ₯Ό 가지고 μžˆλ‹€.
  • ν•˜μ§€λ§Œ!! ν”„λ‘œμ„ΈμŠ€ ν™˜κ²½μ— λ”°λΌμ„œ λ‘˜ μ΄μƒμ˜ μŠ€λ ˆλ“œλ₯Ό λ™μ‹œμ— μ‹€ν–‰ν•  수 μžˆλ‹€. (λ©€ν‹°μŠ€λ ˆλ”©)

λ™μ‹œμ„± ν”„λ‘œκ·Έλž˜λ° (Concurrency)

λ™μ‹œμ„± ν”„λ‘œκ·Έλž˜λ°μ΄λž€?

→ 같은 μ‹œκ°„ μ•ˆμ— λ‹€μˆ˜μ˜ μž‘μ—…μ΄ μ‹€ν–‰λ˜λŠ” ν”„λ‘œκ·Έλž˜λ°

 

 

ν•œ μŠ€λ ˆλ“œ μ•ˆμ— λ§Žμ€ μ–‘μ˜ Taskκ°€ μŒ“μ΄κ²Œ λœλ‹€λ©΄ 속도 지연, μ„±λŠ₯ μ €ν•˜ λ“±μ˜ λ¬Έμ œλ“€μ΄ λ°œμƒν•œλ‹€.

 

μ΄λ ‡κ²Œ λ‹€λ₯Έ μŠ€λ ˆλ“œλ‘œ Taskλ₯Ό λ‚˜λˆ μ£Όλ©΄ λœλ‹€!!

 

근데… 각각의 Task듀을 μ–΄λ–»κ²Œ λΆ„μ‚° μ‹œν‚¬κ±°λƒ γ…‹γ…‹

Task4λŠ” 였래 걸리고… Task2λŠ” 금방 λλ‚˜κ³ … 이거 λ„˜ λΆˆκ³΅ν‰μ΄μŠˆ 😑

 

 

ν•˜μ§€λ§Œ 우리의 iOS의 λ™μ‹œμ„± ν”„λ‘œκ·Έλž˜λ°μ€ Queue에 λ„£κΈ°λ§Œ ν•˜λ©΄ μ•Œμ•„μ„œ OSκ°€ μŠ€λ ˆλ“œλ₯Ό μ°Ύμ•„μ„œ λΆ„μ‚°μ²˜λ¦¬λ₯Ό ν•΄μ€€λ‹€!!

 

 

 

λ°”λ‘œ μš”λ ‡κ²Œ 말이닀~

멋진 μ•„μš” κ°œλ°œμžκ°€ ν•΄μ•Όν•  일은 Queue에 Task듀을 λ³΄λ‚΄λŠ” 것! γ…Žγ…Ž


λ™μ‹œμ„± ν”„λ‘œκ·Έλž˜λ°

  • λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” 것
  • μ‹±κΈ€μ½”μ–΄μ—μ„œ λ©€ν‹°μŠ€λ ˆλ“œλ₯Ό λ™μž‘μ‹œν‚€κΈ° μœ„ν•œ λ°©μ‹μœΌλ‘œ λ©€ν‹° νƒœμŠ€ν‚Ήμ„ μœ„ν•΄ μ—¬λŸ¬κ°œμ˜ μŠ€λ ˆλ“œκ°€ λ²ˆκ°ˆμ•„ κ°€λ©΄μ„œ μ‹€ν–‰λ˜λŠ” 방식
  • λ³‘λ ¬μ μœΌλ‘œ μ‹€ν–‰λ˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄μ§€λ§Œ, 사싀은 μ„œλ‘œ λ²ˆκ°ˆμ•„ κ°€λ©΄μ„œ μ‹€ν–‰λ˜κ³  μžˆλ‹€.

비동기 ν”„λ‘œκ·Έλž˜λ°

비동기 ν”„λ‘œκ·Έλž˜λ°μ΄λž€?

→ ν”„λ‘œκ·Έλž¨μ˜ μ£Ό μ‹€ν–‰ 흐름을 λ©ˆμΆ°μ„œ κΈ°λ‹€λ¦¬λŠ” λΆ€λΆ„ 없이 λ°”λ‘œ λ‹€μŒ μž‘μ—…μ„ μ‹€ν–‰ν•  수 있게 ν•˜λŠ” 것

→ Taskλ₯Ό λ‹€λ₯Έ μŠ€λ ˆλ“œλ‘œ 보낸 후에 κ·Έ μž‘μ—…μ΄ λλ‚˜κΈ°λ₯Ό 기닀리지 μ•ŠλŠ”λ‹€! (기닀리지 μ•ŠκΈ° λ•Œλ¬Έμ— λ‹€μŒ Taskλ₯Ό 진행할 수 μžˆλ‹€.)

 

 


병렬성 ν”„λ‘œκ·Έλž˜λ°

병렬성 ν”„λ‘œκ·Έλž˜λ°μ΄λž€?

→ 물리적으둜 λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” 것

λ­”κ°€ λ™μ‹œμ„± ν”„λ‘œκ·Έλž˜λ°μ΄λž‘ λΉ„μŠ·ν•œ 것 같은데… ν—·κ°ˆλ¦°λ‹€λ©΄

 

 

λ™μ‹œμ„± ν”„λ‘œκ·Έλž˜λ° vs 병렬성 ν”„λ‘œκ·Έλž˜λ°

 

 

  • λ™μ‹œμ„± : 톡μž₯을 λ§Œλ“€λŸ¬ 온 16λͺ…μ˜ 고객듀과 1λͺ…μ˜ 은행직원
  • 병렬성 : 톡μž₯을 λ§Œλ“€λŸ¬ 온 16λͺ…μ˜ 고객듀과 2λͺ…μ˜ 은행직원

 

두 방식을 λΉ„κ΅ν•˜λ©΄,

병렬성은 μž‘μ—…λ“€μ„ 물리적으둜 λ™μ‹œμ— μˆ˜ν–‰ν•˜κΈ° λ•Œλ¬Έμ— ν•˜λ‚˜μ˜ μž‘μ—… 응닡 μ‹œκ°„μ„ 쀄일 수 μžˆλ‹€.

λ™μ‹œμ„±μ€ 단일 μž‘μ—…μ˜ 응닡 μ‹œκ°„μ„ 쀄일 μˆ˜λŠ” μ—†μ§€λ§Œ, ν•œλ²ˆμ— μ—¬λŸ¬ μž‘μ—…μ„ μ²˜λ¦¬ν•  수 μžˆλ‹€.

 

 

λ‹€μ‹œ 정리λ₯Ό ν•΄λ³΄μžλ©΄ 🧐🧐🧐

μ‹€μ œλ‘œ 1개의 물리적 μŠ€λ ˆλ“œκ°€ μ—¬λŸ¬ 개의 μ†Œν”„νŠΈμ›¨μ–΄μ  μŠ€λ ˆλ“œλ‘œ λ‚˜λ‰˜μ–΄μ Έμ„œ μ—¬λŸ¬κ°€μ§€ μž‘μ—…μ„ λ™μ‹œμ— μ²˜λ¦¬ν•˜λŠ” 것! ➑️ λ™μ‹œ

μ‹€μ œλ‘œ 물리적 μŠ€λ ˆλ“œκ°€ μ—¬λŸ¬ κ°œκ°€ 있고, μŠ€λ ˆλ“œλ“€μ΄ 각자 본인 μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” 것! ➑️ λ³‘λ ¬

 

728x90