[Node.js] (6) Single Thread, Event Loop & Blocking Code
μ±κΈμ€λ λ (Single JavaScript Thread )
NodeJsλ νλμ JavaScript μ€λ λλ§ μ¬μ©νλ€.
μ€λ λλ μ½κ² λ§ν΄ μ΄μ 체μ μμμ νλ‘μΈμ€λ‘ νλμ μ€λ λλ§ μ¬μ©νλ€λ©΄ μ΄λ»κ² μ¬λ¬ μμ²μ λ€λ£¨λμ§μ κΆκΈν΄μ§λ€.
κ° μμ²λ§λ€ μ€λ λλ₯Ό μ§μ ν μ μμΌλ, κ²°κ΅ λͺ¨λ νλμ μ€λ λμμ μ€νλ κ².
μ΄λ²€νΈλ£¨ν ( Event Loop )
μ΄λ²€νΈ 루νλ Node.js κ° μμνλ©΄ νλ‘κ·Έλ¨μ μν΄ μλμΌλ‘ μμλλ€.
μ΄λ²€νΈ 루νλ μ΄λ²€νΈ μ½λ°±μ λ€λ£¬λ€.
νΉμ μ΄λ²€νΈκ° μΌμ΄λ¬μ λ λ°λ‘ μ΄λ²€νΈ 루νκ° ν΄λΉ μ½λλ₯Ό μ€ννλ κ²μ΄λ€.
λͺ¨λ μ½λ°±μ νμ νκ³ μμ΄μ μ½λλ₯Ό μ€ννλ€.
빨리 λλΌ μ μλ μ½λλ₯Ό ν¬ν¨ν μ½λ°±λ§μ λ€λ£¬λ€.
λλλλν΄λ μλ³Έ λνλ¨ΌνΈκ° μ΅κ³ μλκ² λκ° : https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/
https://nodejs.org/en/docs/guides/dont-block-the-event-loop/




μ컀ν (Worker Pool )
νμΌ μμ€ν μ°μ° λ±μ μ€λ 걸리λ μ°μ°μ μ컀νμ 보λ΄μ§λ€.
μ΄ μμ Node.jsκ° μλμΌλ‘ μμνκ³ κ΄λ¦¬νλ€.
λ¬΄κ±°μ΄ μμ μ λ΄λΉνλ μ컀νμ JavaScript μ½λλ‘λΆν° μμ ν λΆλ¦¬λμ΄ λ€λ₯Έ μ¬λ¬ μ€λ λμμ μλν μ μλ€.
μ±μ μ€ννλ μ΄μ 체μ μ κΉμ μ°κ΄μ΄ μλ€.
μ½λλ‘λΆν° λΆλ¦¬λμκΈ° λλ¬Έμ λ¬΄κ±°μ΄ μμ μ λͺ¨λ μ²λ¦¬ν μ μλ κ²μ΄λ€.
νμΌκ³Ό κ΄λ ¨λ μμ μ ν λλ μ컀νμ μμ»€κ° μ½λ, μμ² λ° μ΄λ²€νΈ 루νμ λΆλ¦¬λ μνμμ μμ μ μννλ€.
μ΄λ²€νΈ 루νμλ νκ°μ§ μ°κ²°μ μ΄ μλλ°, μμ»€κ° μμ μ λ§μΉλ©΄ (νμΌ μ½κΈ° λ±) μ½κΈ° μ°μ°μ λν μ½λ°±μ΄ μμλλλ° μ΄λ²€νΈ 루νκ° μ΄λ²€νΈμ μ½λ°±μ μ± μμ§κΈ° λλ¬Έμ κ²°κ΅ μ΄λ²€νΈ 루νμ λ€μ΄κ°κ² λ κ²μ΄λ€. κ±°κΈ°μ Node.jsκ° μλ§μ μ½λ°±μ μ€ννλ€.
μ°Έκ³ μλ£ : https://medium.com/zigbang/nodejs-event-loop%ED%8C%8C%ED%97%A4%EC%B9%98%EA%B8%B0-16e9290f2b30
https://evan-moon.github.io/2019/08/01/nodejs-event-loop-workflow/