Eventloop.md

์˜ค๋Š˜์€ Javascript์˜ Event Loop์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Event Loop๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ์ธ JS์—”์ง„์„ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์ฒ˜๋Ÿผ ๋ณด์ด๋„๋ก ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Javascript์˜ ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด์„œ ์•Œ์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

Javascript Engine

jsengine

JS ์—”์ง„์€ Memory Heap๊ณผ Call stack์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค.

Memory Heap

  • ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ด๋ฃจ์–ด์ง€๋Š” ๊ณณ

  • ์„ ์–ธํ•œ ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋“ฑ

Call Stack

  • ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์Œ“์ด๋Š” ๊ณณ

  • Stack(LIFO)ํ˜•ํƒœ๋กœ ์Œ“์ž„

Web API

DOM, Ajax, Timeout ๋“ฑ์ด ์‹คํ–‰๋˜๋Š” JS ์—”์ง„์ด ์•„๋‹™๋‹ˆ๋‹ค.

  1. Callstack์— ๋น„๋™๊ธฐ ํ•จ์ˆ˜ ์Œ“์ž„

  2. ํ•ด๋‹น ๋น„๋™๊ธฐ ํ•จ์ˆ˜๊ฐ€ Web API ํ˜ธ์ถœ

  3. WebAPI๋Š” ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ Callback Queue์— ์‚ฝ์ž…

Callback Queue

  • ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋œ ์ฝœ๋ฐฑํ•จ์ˆ˜๊ฐ€ ๋ณด๊ด€๋˜๋Š” ์˜์—ญ

  • Queue(FIFO) ๊ตฌ์กฐ

๊ทธ๋ž˜์„œ, Event Loop๋Š” ๋ญ˜ ํ•˜๋Š” ๊ฑฐ์•ผ?

Event Loop

  1. Callstack์—์„œ ๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ํ•จ์ˆ˜๋“ค์ด ๋ชจ๋‘ ์‹คํ–‰๋˜์–ด

  2. Callstack์ด ๋น„์—ˆ๋‹ค๋ฉด

  3. Callback Queue์˜ ์ฒซ๋ฒˆ์งธ, ์ฆ‰ ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด์˜จ ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋ฅผ Callstack์œผ๋กœ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

์œ„ ๊ณผ์ •์„ ํ†ตํ•ด ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋กœ ๋™์ž‘ํ•˜๋Š” Javascript์—์„œ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์ฒ˜๋Ÿผ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!.

Last updated