Bibi's DevLog πŸ€“πŸŽ

Sync, Async / Serial, Concurrent λ³Έλ¬Έ

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

Sync, Async / Serial, Concurrent

λΉ„λΉ„ bibi 2022. 3. 25. 12:29

Sync, Async / Serial, Concurrent

https://babbab2.tistory.com/64?category=831129

https://cskime.tistory.com/18

Sync : synchronous (동기)

: λ™μ‹œ λ°œμƒν•˜λŠ”.

  • 의미 : "μš”μ²­μ— λŒ€ν•œ 응닡"이 λ™μ‹œμ— λ°œμƒν•˜λŠ”.
  • 즉 λ‚΄ μž‘μ—…μ΄ λλ‚˜κΈ° μ „κΉŒμ§€ λ‹€λ₯Έ μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 의미 = "순차적"
  • ν‰μ†Œμ— 비동기 μž‘μ—… 없이 ν•˜λŠ” 코딩이 동기 λ°©μ‹μœΌλ‘œ 이루어짐.
  • λŒ€κ·œλͺ¨μ˜ μž‘μ—…μ„ λ™κΈ°λ‘œ μ²˜λ¦¬ν•˜λ©΄ μž‘μ—…μ†λ„ μ €ν•˜ - λΉ„λ™κΈ°λ‘œ μ²˜λ¦¬ν•΄μ•Ό 함

Async : asynchronous (비동기)

: λ™μ‹œμ— λ°œμƒν•˜μ§€ μ•ŠλŠ”.

  • 의미 : "μš”μ²­μ— λŒ€ν•œ 응닡"이 λ™μ‹œμ— λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€.
  • 즉 λ‚΄ μž‘μ—…μ΄ λλ‚˜κΈ° 전에 λ‹€λ₯Έ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλ‹€λŠ” 의미 = "λ™μ‹œμ "
  • λΉ„λ™κΈ°λ‘œ μ²˜λ¦¬ν•œ μž‘μ—…μ€ λ‹€μŒ μž‘μ—…κ³Ό λ™μ‹œμ— μ‹€ν–‰λœλ‹€
    • μ—¬λŸ¬ μž‘μ—…μ„ λ™μ‹œμ— 처리 κ°€λŠ₯ - μž‘μ—…μ†λ„ μƒμŠΉ
  • 콜백 ν•¨μˆ˜ : 비동기 μž‘μ—…μ€ μš”μ²­μ— λŒ€ν•œ 응닡이 λ‚˜μ€‘μ— 였기 λ•Œλ¬Έμ—, λ‚˜μ€‘μ— ν•΄μ•Ό ν•  μž‘μ—…λ“€μ„ μ½œλ°±ν•¨μˆ˜λ‘œ μ²˜λ¦¬ν•¨

Serial

: 순차적인.

  • 의미 : 순차적인. 연속적인.
  • iOS) GCDμ—μ„œ serial queue λŠ” Main queue λ“±μœΌλ‘œ μ‚¬μš©ν•¨.
    • λ‚΄ Queue 에 λ“€μ–΄μ˜¨ μž‘μ—…λ“€μ„ 순차적으둜(Serial) μ‹€ν–‰μ‹œν‚€κ² λ‹€.
    • Main Queueκ°€ SerialQueue에 해당함
  • ❗️serial queueλŠ” ν•œ λ²ˆμ— ν•˜λ‚˜μ˜ μž‘μ—…λ§Œ μ‹€ν–‰μ‹œν‚¬ 수 있음
  • serial queue λŠ” 주둜 μž‘μ—…μ„ 동기화할 λ•Œ μ‚¬μš©ν•¨

Concurrent

: λ™μ‹œμ— λ°œμƒν•˜λŠ”.

  • 의미 : λ™μ‹œμ μΈ. λ™μ‹œμ— λ°œμƒμ‹œν‚€λŠ”.

  • iOS) GCDμ—μ„œ concurrent queueλŠ” DispatchQueue λ“±μœΌλ‘œ μ‚¬μš©ν•¨

    • λ‚΄ Queue에 λ“€μ–΄μ˜¨ μž‘μ—…λ“€μ„ λ™μ‹œμ μœΌλ‘œ(concurrent) μ‹€ν–‰μ‹œν‚€κ² λ‹€.
  • ❗️concurrent queue λŠ” ν•œ λ²ˆμ— μ—¬λŸ¬ μž‘μ—…μ„ λ™μ‹œμ— μ‹€ν–‰μ‹œν‚¬ 수 있음

  • concurrent queue λŠ” 주둜 μž‘μ—…μ„ μˆ˜ν–‰ν•  λ•Œ μ‚¬μš©ν•¨


Sync != Serial, Async != Concurrent 이닀!

λ‘˜μ€ μ—„μ—°νžˆ λ‹€λ₯Έ κ°œλ…!

  • Sync, Async λŠ” "단일 μž‘μ—…"에 λŒ€ν•΄ μš”μ²­ ν›„ κ²°κ³Όλ₯Ό 기닀릴지 말지에 λŒ€ν•œ 관점이고,
    • 단일 μž‘μ—…μ˜ μš”μ²­μ— λŒ€ν•œ 응닡을 기닀릴지(sync) 말지(async)
  • Serial, Concurrent λŠ” "μ—¬λŸ¬ μž‘μ—…"에 λŒ€ν•΄ μ•ž μž‘μ—…κ³Ό λ’· μž‘μ—…μ„ μ–΄λ–»κ²Œ 싀행할지에 λŒ€ν•œ 관점이닀.
    • μ•ž μž‘μ—…κ³Ό λ’· μž‘μ—…μ„ 순차적으둜 싀행할지(serial) λ™μ‹œ 싀행할지(concurrent)