πŸ’» 개발/iOS

[TIL] 22.03.22

2022. 3. 22. 20:20
λͺ©μ°¨
  1. κ³΅λΆ€ν•œ 것
  2. μ•Œκ²Œλœ 것
  3. 1. 코루틴
  4. 곡뢀할 것
  5. λŠλ‚€ 점

κ³΅λΆ€ν•œ 것

코루틴
ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 1문제

μ•Œκ²Œλœ 것

1. 코루틴

코루틴 은 비동기 처리 λ₯Ό μœ„ν•΄ μ½”ν‹€λ¦° μ—μ„œ μ§€μ›ν•˜λŠ” 라이브러리 이닀. μš°μ„  동기 와 비동기 에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž. λ™κΈ°λŠ” 응닡을 μš”μ²­ν–ˆμ„ λ•Œ λ°˜ν™˜ 값을 μ–»κΈ° μ „κΉŒμ§€ λŒ€κΈ°ν•˜λŠ” 것을 λœ»ν•˜κ³ , λΉ„λ™κΈ°λŠ” λŒ€κΈ°μ‹œκ°„ λ³„λ„μ˜ Taskλ₯Ό μˆ˜ν–‰ν•˜λŠ” 것을 λœ»ν•œλ‹€.

λ™μ‹œμ„± 처리

μž‘λ…„ OS μˆ˜μ—…μ„ 듀을 λ•Œ λ™μ‹œμ„± 처리 에 λŒ€ν•΄μ„œ λ°°μ› μ—ˆλ‹€. 그런데 κ°‘μžκΈ° λ™μ‹œμ„± 처리λ₯Ό μ™œ μ–˜κΈ°ν•˜λŠλƒ, λ™μ‹œμ„± μ²˜λ¦¬κ°€ λΉ„λ™κΈ°μ˜ κ°œλ…μ΄ μ μš©λ˜μ–΄ 있기 λ•Œλ¬Έμ΄λ‹€. λ™μ‹œμ„± μ²˜λ¦¬λŠ” 말 κ·ΈλŒ€λ‘œ λ™μ‹œμ— μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€κ°€ λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” 것이닀. (Context Switching 이 λ°œμƒν•œλ‹€.) μ‹±κΈ€ μ½”μ–΄ μ—μ„œ λ©€ν‹° μ“°λ ˆλ“œ λ₯Ό ν†΅ν•΄μ„œ 이λ₯Ό κ΅¬ν˜„ν•˜κ³  μžˆλ‹€.

μ“°λ ˆλ“œ

λ™μ‹œμ„± 처리λ₯Ό μœ„ν•΄μ„œ μ“°λ ˆλ“œ 의 κ°œλ…μ΄ λ“±μž₯ν•˜λŠ”λ° μ“°λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μ‹€ν–‰ νλ¦„μ˜ λ‹¨μœ„λ₯Ό μ˜λ―Έν•œλ‹€. μ—¬λŸ¬ 개의 μ“°λ ˆλ“œμ—μ„œ Context Switching 을 톡해 λ²ˆκ°ˆμ•„κ°€λ©΄μ„œ μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€.

μ“°λ ˆλ“œ VS 코루틴

μ“°λ ˆλ“œ 와 코루틴 λͺ¨λ‘ λ™μ‹œμ„± 처리 λ₯Ό μœ„ν•΄ λ“±μž₯ν•œ κ°œλ…μ΄λ‹€. μ“°λ ˆλ“œμ˜ 경우 각 μž‘μ—…μ— ν•΄λ‹Ήν•˜λŠ” 독립적인 λ©”λͺ¨λ¦¬ μ˜μ—­(Stack)을 ν• λ‹Ήλ°›λŠ”λ° μ“°λ ˆλ“œκ°€ 좔가될 λ•Œλ§ˆλ‹€ κ·Έ 수만큼 Stack이 μΆ”κ°€λœλ‹€. λ˜ν•œ μ–΄λ–€ μ“°λ ˆλ“œ μž‘μ—…μ„ λ¨Όμ € μˆ˜ν–‰ν• μ§€μ™€ μ–΄λ–€ μ“°λ ˆλ“œλ₯Ό 많이 μˆ˜ν–‰ν• μ§€μ— λŒ€ν•œ Preempting Scehduling 을 μ§„ν–‰ν•œλ‹€. 이와 λ‹€λ₯΄κ²Œ 코루틴은 각 μž‘μ—…μ— λŒ€ν•΄ μ“°λ ˆλ“œλ₯Ό ν• λ‹Ήλ°›μ§€ μ•Šκ³  이보닀 더 μž‘μ€ λ‹¨μœ„μΈ Object λ₯Ό ν• λ‹Ήλ°›κ³  이듀을 Programmer Switching ν•¨μœΌλ‘œμ„œ Context Switching μ—μ„œ λ°œμƒν•˜λŠ” λΉ„μš©μ„ 쀄이고 λ™μ‹œμ„± 처리λ₯Ό μ§€μ›ν•œλ‹€.

μ“°λ ˆλ“œμ˜ Context Switching
μ½”λ£¨ν‹΄μ˜ Programmer Switching

μœ„μ˜ 두 사진을 보면 차이에 λŒ€ν•΄μ„œ λšœλ ·ν•˜κ²Œ μ•Œ 수 μžˆμ„ 것이닀. μ“°λ ˆλ“œλŠ” Context Switching 을 ν†΅ν•΄μ„œ Block 된 μ“°λ ˆλ“œμ—μ„œ λ‹€λ₯Έ μ“°λ ˆλ“œλ‘œ μ „ν™˜μ΄ μ§„ν–‰λ˜κ³  Taskλ₯Ό 이어 λ‚˜κ°„λ‹€. μ½”λ£¨ν‹΄μ˜ 경우 ν•˜λ‚˜μ˜ μ“°λ ˆλ“œμ—μ„œ Programmer Switching 을 ν†΅ν•΄μ„œ Object λ₯Ό μ „ν™˜ν•˜μ—¬ Taskλ₯Ό 이어 λ‚˜κ°„λ‹€. ν•˜μ§€λ§Œ λ§ˆμ§€λ§‰ μ„Έ 번째 그림은 2개의 μ“°λ ˆλ“œμ—μ„œ Taskλ₯Ό μ§„ν–‰ν•˜κ³  μžˆμœΌλ―€λ‘œ Context Switching 이 λΆˆκ°€ν”Όν•˜λ‹€. 코루틴을 μ‚¬μš©ν•  λ•ŒλŠ” No Context Switching λ₯Ό μž₯점을 ν™œμš©ν•˜κΈ° μœ„ν•΄ 단일 μ“°λ ˆλ“œμ—μ„œ μ—¬λŸ¬ 코루틴 을 μ‹€ν–‰ν•˜λŠ” 것이 μ’‹λ‹€.

1. 코루틴은 μ“°λ ˆλ“œμ˜ λŒ€μ•ˆμ΄ μ•„λ‹Œ κΈ°μ‘΄ μ“°λ ˆλ“œλ₯Ό 더 잘게 μͺΌκ°œμ–΄ μ‚¬μš©ν•˜κΈ° μœ„ν•œ κ°œλ…μ΄λ‹€.
2. 코루틴은 μž‘μ—…μ˜ λ‹¨μœ„λ₯Ό Threadμ—μ„œ Object둜 μΆ•μ†Œν•˜λ©΄μ„œ Context Switch λΉ„μš©μ„ μ΅œμ†Œν™”ν–ˆλ‹€.

참고 자료

Coroutine, Thread μ™€μ˜ 차이와 κ·Έ νŠΉμ§•
코루틴 κ°€μ΄λ“œ

곡뢀할 것

코루틴

λŠλ‚€ 점

😎

μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'πŸ’» 개발 > iOS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[TIL] 22.04.17  (0) 2022.04.17
[TIL] 22.03.23  (0) 2022.03.23
[TIL] 22.03.20  (0) 2022.03.20
[TIL] 22.03.19  (0) 2022.03.19
[TIL] 22.03.17  (0) 2022.03.17
  1. κ³΅λΆ€ν•œ 것
  2. μ•Œκ²Œλœ 것
  3. 1. 코루틴
  4. 곡뢀할 것
  5. λŠλ‚€ 점
'πŸ’» 개발/iOS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [TIL] 22.04.17
  • [TIL] 22.03.23
  • [TIL] 22.03.20
  • [TIL] 22.03.19
kodo_o
kodo_o
iOS κΏ€μžΌ!
kodo_o
🍎🍏
kodo_o
전체
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기 (149)
    • πŸ”¨ ν”„λ‘œμ νŠΈ (0)
      • TP 1 (0)
      • WhiteHCCTV (0)
      • FootPrint (0)
    • πŸ’» 개발 (63)
      • iOS (30)
      • Android (6)
      • Kotlin (4)
      • Flutter (9)
      • Node.js (5)
      • Architecture (1)
      • 였늘의 μ‚½μ§ˆ (7)
      • μ—λŸ¬μ™€μ˜ 동침 (1)
    • ✏️ μ•Œκ³ λ¦¬μ¦˜ (6)
      • Graph (6)
      • String (0)
      • Sort (0)
    • ✍️ μ½”ν…Œ μ€€λΉ„ (44)
      • Math (1)
      • Implementation (3)
      • String (3)
      • Brute Force (5)
      • Back Tracking (7)
      • Greedy (0)
      • Dynamic Programming (13)
      • Binary Search (1)
      • DFS, BFS (5)
      • Shortest Path (2)
      • Two Pointer (4)
      • MST (0)
    • πŸ“š CS (6)
      • Operating System (6)
    • ⛹️ 라이프 (30)
      • 2020 κ²¨μšΈλ°©ν•™ λͺ¨κ°μ½”(개인) (12)
      • 2021 여름방학 λͺ¨κ°μ½”(개인) (6)
      • μ½”λ”© ν…ŒμŠ€νŠΈ (1)
      • 회고 (10)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • κΉƒν—ˆλΈŒ

인기 κΈ€

졜근 κΈ€

졜근 λŒ“κΈ€

hELLO Β· Designed By μ •μƒμš°.
kodo_o
[TIL] 22.03.22
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

단좕킀

λ‚΄ λΈ”λ‘œκ·Έ

λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
Q
Q
μƒˆ κΈ€ μ“°κΈ°
W
W

λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
E
E
λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
C
C

λͺ¨λ“  μ˜μ—­

이 νŽ˜μ΄μ§€μ˜ URL 볡사
S
S
맨 μœ„λ‘œ 이동
T
T
ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
H
H
단좕킀 μ•ˆλ‚΄
Shift + /
⇧ + /

* λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.