์ฑ๊ธ์ค๋ ๋ (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/
'Javascript > Node.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Node.js] (7) Node ๋ชจ๋ ์์คํ ์ฌ์ฉ (0) | 2022.12.13 |
---|---|
[Postman] Rest APIs ๊ฐ๋ฐ์ ์ํ ํฌ์คํธ๋งจ ์ ์ (0) | 2022.12.12 |
[Node.js] (5) ์์ฒญ๊ณผ ์๋ต ์ฐ๊ฒฐํ๊ธฐ, ๋ฒํผ ๊ฐ๋ (๋ฆฌ๋๋ ์ , ์ ์ ์ ๋ ฅ๊ฐ ํ์ผ์์ฑ ํ ์ ์ฅ) (0) | 2022.11.24 |
[Node.js] (4) ์๋ต ์ ์ก (0) | 2022.11.24 |
[Node.js] (3) ์์ฒญ ๊ฐ์ฒด (0) | 2022.11.23 |