πŸ“‹ λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive | 42μž₯ 비동기 ν”„λ‘œκ·Έλž˜λ°

waterglassesΒ·2022λ…„ 7μ›” 13일
0
post-thumbnail

λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive λ„μ„œμ˜ 42μž₯ 비동기 ν”„λ‘œκ·Έλž˜λ°μ„ μ •λ¦¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

42.1 동기 μ²˜λ¦¬μ™€ 비동기 처리

μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 ν•œ λ²ˆμ— ν•˜λ‚˜μ˜ νƒœμŠ€ν¬λ§Œ μ‹€ν–‰ν•  수 μžˆλŠ” μ‹±κΈ€ μŠ€λ ˆλ“œλ°©μ‹μœΌλ‘œ λ™μž‘ν•œλ‹€.
μ‹€ν–‰ 쀑인 νƒœμŠ€ν¬κ°€ μ’…λ£Œν•  λ•ŒκΉŒμ§€ λ‹€μŒμ— 싀행될 νƒœμŠ€ν¬κ°€ λŒ€κΈ°ν•˜λŠ” 방식을 동기 처리라고 ν•œλ‹€.

동기 처리 방식은 νƒœμŠ€ν¬λ₯Ό μˆœμ„œλŒ€λ‘œ ν•˜λ‚˜μ”© μ²˜λ¦¬ν•˜λ―€λ‘œ μ‹€ν–‰ μˆœμ„œκ°€ 보μž₯λœλ‹€λŠ” μž₯점이 μžˆμ§€λ§Œ μ•žμ„  νƒœμŠ€ν¬κ°€ μ’…λ£Œν•  λ•ŒκΉŒμ§€ 이후 νƒœμŠ€ν¬λ“€μ΄ λΈ”λ‘œν‚Ήλ˜λŠ” 단점이 μžˆλ‹€.

반면, ν˜„μž¬ μ‹€ν–‰ 쀑인 νƒœμŠ€ν¬κ°€ μ’…λ£Œλ˜μ§€ μ•Šμ€ μƒνƒœλΌ 해도 λ‹€μŒ νƒœμŠ€ν¬λ₯Ό κ³§λ°”λ‘œ μ‹€ν–‰ν•˜λŠ” 방식을 비동기 처리라고 ν•œλ‹€.

비동기 처리 방식은 ν˜„μž¬ 싀행쀑인 νƒœμŠ€ν¬κ°€ μ’…λ£Œλ˜μ§€ μ•Šμ•„λ„ λ‹€μŒ νƒœμŠ€ν¬λ₯Ό κ³§λ°”λ‘œ μ‹€ν–‰ν•˜λ―€λ‘œ λΈ”λ‘œν‚Ήμ΄ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” μž₯점이 있찌만 νƒœμŠ€ν¬μ˜ μ‹€ν–‰ μˆœμ„œκ°€ 보μž₯λ˜μ§€ μ•ŠλŠ” 단점이 μžˆλ‹€.

비동기 처리λ₯Ό μˆ˜ν–‰ν•˜λŠ” 비동기 ν•¨μˆ˜λŠ” μ „ν†΅μ μœΌλ‘œ 콜백 νŒ¨ν„΄μ„ μ‚¬μš©ν•œλ‹€.

42.2 이벀트 루프와 νƒœμŠ€ν¬ 큐

비동기 ν•¨μˆ˜μΈ setTimeout의 콜백 ν•¨μˆ˜λŠ” νƒœμŠ€ν¬ 큐에 ν‘Έμ‹œλ˜μ–΄ λŒ€κΈ°ν•˜λ‹€κ°€ 콜 μŠ€νƒμ΄ λΉ„κ²Œ 되면 λΉ„λ‘œμ†Œ 콜 μŠ€νƒμ— ν‘Έμ‹œλ˜μ–΄ μ‹€ν–‰λœλ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ‹±κΈ€ μŠ€λ ˆλ“œ λ°©μ‹μœΌλ‘œ λ™μž‘ν•œλ‹€. μ΄λ•Œ μ‹±κΈ€ μŠ€λ ˆλ“œ λ°©μ‹μœΌλ‘œ λ™μž‘ν•˜λŠ” 것은 λΈŒλΌμš°μ €κ°€ μ•„λ‹ˆλΌ λΈŒλΌμš°μ €μ— λ‚΄μž₯된 μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„μ΄λΌλŠ” 것에 μ£Όμ˜ν•΄μ•Όν•œλ‹€. 즉, μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 μ‹±κΈ€ μŠ€λ ˆλ“œλ‘œ λ™μž‘ν•˜μ§€λ§Œ λΈŒλΌμš°μ €λŠ” λ©€ν‹° μŠ€λ ˆλ“œλ‘œ λ™μž‘ν•œλ‹€.

Ref

profile
맀 μˆœκ°„ μ„±μž₯ν•˜λŠ” κ°œλ°œμžκ°€ 되렀고 λ…Έλ ₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

0개의 λŒ“κΈ€