Coroutine - ChoDragon9/posts GitHub Wiki

Coroutine

  • μ‹€ν–‰ 지점을 μ½”λ“œ λΈ”λŸ­μœΌλ‘œ μ €μž₯ν•˜μ—¬, ν•΄λ‹Ή 지점을 μ‹€ν–‰/쀑단/μž¬μ‹œμž‘μ„ ν•  수 μžˆλ‹€.
  • κ·Έλž˜μ„œ 자발적/주기적으둜 μœ νœ΄μƒνƒœλ₯Ό λ§Œλ“€ 수 있기 λ•Œλ¬Έμ— 비선점 λ©€ν‹°νƒœμŠ€ν‚Ήμ΄ κ°€λŠ₯ν•˜λ‹€.
  • λ™μ‹œμ„±κ³Ό 병렬 μ²˜λ¦¬κ°€ κ°€λŠ₯ν•˜λ‹€.
  • 코루틴 μ‚¬μ΄μ˜ μ „ν™˜μ€ μ»¨ν…μŠ€νŠΈ μ „ν™˜μ΄ λ°œμƒν•˜μ§€ μ•ŠμŒ.

μ»¨ν…μŠ€νŠΈ μ „ν™˜

  • 기쑴의 ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ λ˜λŠ” λ ˆμ§€μŠ€ν„°κ°’μ„ μ €μž₯ ν›„
  • λ‹€μŒ ν”„λ‘œμ„ΈμŠ€λ₯Ό μˆ˜ν–‰ν•˜λ„λ‘ μƒˆλ‘œμš΄ ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ λ˜λŠ” λ ˆμ§€μŠ€ν„°κ°’μ„ κ΅μ²΄ν•˜λŠ” μž‘μ—…

비ꡐ

μ„œλΈŒ 루틴

Callerκ°€ 호좜되면 Callerμ—κ²Œ 항상 return을 ν•œλ‹€.

λ°˜λ©΄μ— Coroutine은 νŠΉμ • μ§€μ μ—μ„œ μ‹€ν–‰/쀑단/μž¬μ‹œμž‘μ„ ν•  수 μžˆλ‹€.

μŠ€λ ˆλ“œ

선점식 λ©€ν‹°νƒœμŠ€ν‚Ήμ„ ν•œλ‹€. 즉 λ™μ‹œμ„±μ€ μ œκ³΅ν•˜λ§Œ 병렬 μ²˜λ¦¬λŠ” μ œκ³΅ν•˜μ§€ μ•ŠλŠ”λ‹€.

λ°˜λ©΄μ— Coroutine은 μ»¨ν…μŠ€νŠΈ μ „ν™˜μ—†μ΄ λ™μ‹œμ„±, λ³‘λ ¬μ²˜λ¦¬κ°€ κ°€λŠ₯ν•˜λ‹€.

μž¬κ·€

반볡적인 ν˜ΈμΆœμ„ μœ„ν•΄ μƒˆλ‘œμš΄ μŠ€νƒ ν”„λ ˆμž„μ΄ ν•„μš”ν•˜μ—¬ μ΅œμ•…μ˜ κ²½μš°μ—λŠ” μŠ€νƒ μ˜€λ²„ν”Œλ‘œμš°κ°€ λ°œμƒν•œλ‹€.

λ°˜λ©΄μ— Coroutine은 νŠΉμ • 지점 μ½”λ“œ λΈ”λŸ­μ΄ μ €μž₯λ˜λ―€λ‘œ 데이터가 μŒ“μ΄μ§€ μ•ŠλŠ” λ‹€.