[TIL๐Ÿ”ฅ] Day2(8/3)

๊น€๋‹ค์Šฌยท2021๋…„ 8์›” 3์ผ
0

Today I Learned

๋ชฉ๋ก ๋ณด๊ธฐ
2/22

Introduction

์•„์นจ 11์‹œ๋ถ€ํ„ฐ ํŒ€์›๋“ค๊ณผ ์–ด์ œ ๋ฐฐ์šด ๋‚ด์šฉ์„ ์ด์•ผ๊ธฐํ–ˆ๋Š”๋ฐ,,,
๋‚œ ์•„์ง ๊ฐ€์•ผํ•  ๊ธธ์ด ๋จผ ๊ฒƒ ๊ฐ™๋‹ค..๐Ÿ˜ข
๋‚˜๋„ ๋„์›€์ด ๋˜๋Š” ํŒ€์›์ด ๋  ์ˆ˜ ์žˆ๋„๋ก ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ•ด์•ผ๊ฒ ๋‹ค.
์˜ค๋Š˜์€ ๊ณ„์† ํ—ท๊ฐˆ๋ ธ๋˜ ์ด๋ฒคํŠธ ๋ฃจํ”„์˜ ๋™์ž‘ ๊ณผ์ •์— ๋Œ€ํ•ด ํ™•์‹คํžˆ ์งš๊ณ  ๋„˜์–ด๊ฐ€๊ณ ์ž ํ•œ๋‹ค.

์˜ค๋Š˜ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šด ๊ฒƒ

์ฒซ์งธ๋‚ ๋ณด๋‹ค ๋” ์–ด๋ ค์šด ๊ฒƒ๋“ค์ด ์šฐ์ˆ˜์ˆ˜ ์Ÿ์•„์ ธ๋‚˜์™”๋‹ค.
๊ทผ๋ฐ ๊ฐ•์‚ฌ๋‹˜ ๊ฐ•์˜๋ ฅ ์ตœ๊ณ ์‹œ๋‹ค. ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ธฐ๋Š” ํ๋ฆ„๋Œ€๋กœ ๊ฐ•์˜๋ฅผ ํ•ด์ฃผ์…”์„œ ๋„ˆ๋ฌด ์ข‹๋‹ค.

1. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ
2. ๊ฐ์ฒด์ง€ํ–ฅ๊ณผ ํ”„๋กœํ† ํƒ€์ž… - ๐ŸŒŸ ํ”„๋กœํ† ํƒ€์ž… ํฌ์ŠคํŒ… ํ•„์ˆ˜
3. ์ด๋ฒคํŠธ ๋ฃจํ”„
4. ์œ ๋‹ˆ์ฝ”๋“œ
5. ์ •๊ทœ ํ‘œํ˜„์‹ - ๐Ÿ˜“ ๋ณต์Šต ํ•„์š”!!!
6. ์ฟ ํ‚ค์™€ ์„ธ์…˜, ์›น ์Šคํ† ๋ฆฌ์ง€
7. ์ž๋ฃŒ๊ตฌ์กฐ
8. ์‹œ๊ฐ„ ๋ณต์žก๋„

๋ณต์Šตํ•ด์•ผํ•  ๊ฒƒ๋“ค์ด ๋„ˆ๋ฌด ๋งŽ์ง€๋งŒ,,,
์˜ค๋Š˜์˜ ๋‹ค๋ฃฐ ์ฃผ์ œ๋Š” ์ด๋ฒคํŠธ ๋ฃจํ”„์˜ ๋™์ž‘ ๊ณผ์ •์ด๋‹ค

๐Ÿ’ซ ์ด๋ฒคํŠธ ๋ฃจํ”„

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” Single Thread๋กœ ๋™์ž‘ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋ชจ๋‘ ์•Œ๊ณ  ์žˆ์„ ๊ฒƒ์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๊ณผ์—ฐ ์–ด๋–ค ์›๋ฆฌ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ํด๋ฆญ ์ด๋ฒคํŠธ ๋“ฑ์„ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ผ๊นŒ?

๋ฐ”๋กœ ๋ฐ”๋กœ ์ด๋ฒคํŠธ ๋ฃจํ”„๋ผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
์ด๋ฒคํŠธ ๋ฃจํ”„๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ํฌํ•จ๋˜์–ด์žˆ์ง€ ์•Š๊ณ , ๋ธŒ๋ผ์šฐ์ €, Node.js ์—์„œ ์ž์ฒด์ ์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

๊ฒฐ๊ตญ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์—”์ง„์€ Single Thread์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €๋Š” Multi Thread๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์‹œ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค!

์ด๋ฒคํŠธ ๋ฃจํ”„์˜ ๋™์ž‘ ๊ณผ์ •

์‹ค์Šต ์ฝ”๋“œ

  1. ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์ „์—ญ ์Šค์ฝ”ํ”„ ๋‚ด์—์„œ ์‹คํ–‰

  2. setTimeout์ด ์‹คํ–‰๋˜์–ด call stack์— ์Œ“์ด๋ฉด,
    ์›น ๋‚ด๋ถ€์ ์œผ๋กœ Web API ์‹คํ–‰
    call stack์—์„œ ์ข…๋ฃŒ

  3. foo ํ•จ์ˆ˜ ์‹คํ–‰
    call stack์— foo ํ•จ์ˆ˜ ์Œ“์ž„
    console.log ์‹คํ–‰
    call stack์—์„œ ์ข…๋ฃŒ

  4. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์— call stack์€ ๋น„์–ด ์žˆ๋Š” ์ƒํƒœ

  5. 0.1์ดˆ๊ฐ€ ์ง€๋‚œ ํ›„,
    Web API์—์„œ callback ํ•จ์ˆ˜๋ฅผ Task Queue๋กœ ๋ฐ€์–ด๋„ฃ๊ธฐ

  6. call stack์ด ๋น„์–ด์žˆ๋‹ค๋ฉด,
    callback ํ•จ์ˆ˜๋Š” Task Queue์—์„œ call stack์œผ๋กœ ์ด๋™
    => ์ด๋Ÿฌํ•œ ๊ณผ์ •์„ 'ํ‹ฑ(Tick)'์ด๋ผ ํ•จ

  7. Task Queue๋Š” FIFO(์„ ์ž…์„ ์ถœ) ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘

๊ฒฐ๊ณผ์ ์œผ๋กœ, foo -> bar์˜ ์ˆœ์„œ๋กœ ์ถœ๋ ฅ ๋จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Comment

์•„ ์ด๋Ÿฌ ์ด๋Ÿฌํ•œ ๊ณผ์ •์ด๊ฒ ์ง€ํ•˜๊ณ  ๊ณต๋ถ€๋ฅผ ๊ฒŒ์„๋ฆฌํ–ˆ๋˜ ๋‚˜์˜ ๊ณผ๊ฑฐ๋ฅผ ๋ฐ˜์„ฑํ•œ๋‹ค...
ํ™•์‹คํžˆ ๊ฐ•์˜๋“ฃ๊ณ , ์ง์ ‘ ์ฐพ์•„๋ณด๋ฉฐ ์–ด๋–ค ๋กœ์ง์ธ์ง€ ๊นจ์šฐ์น˜๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ธ€์„ ์ž‘์„ฑํ•˜๋‹ˆ ์ด๋ฒคํŠธ ๋ฃจํ”„์— ๋Œ€ํ•ด ํ™•์‹คํžˆ ์ดํ•ดํ–ˆ๋‹ค...
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์žฌ๋ฐŒ๋Š”๋ฐ ์–ด๋ ค์šด ๋„ˆ๋ž€ ๋…€์„...
๊ผญ 5๊ฐœ์›” ์•ˆ์— ์ •๋ณตํ• ๊บผ๋‹ค!!!

์ฐธ๊ณ  ์‚ฌ์ดํŠธ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ์ด๋ฒคํŠธ ๋ฃจํ”„
https://kyounghwan01.github.io/blog/JS/JSbasic/eventLoop/
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ์ด๋ฒคํŠธ ๋ฃจํ”„
https://meetup.toast.com/posts/89

profile
์ธ์ƒ์€ ์šฉ๊ธฐ์˜ ์–‘์— ๋”ฐ๋ผ ์ค„์–ด๋“ค๊ฑฐ๋‚˜, ๋Š˜์–ด๋‚œ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€