๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โญ Personal_Study/Javascript

๋™๊ธฐ์™€ ๋น„๋™๊ธฐ

by ํฌ์ŠคํŠธ์‰์ดํฌ 2022. 11. 4.

๋™๊ธฐ์™€ ๋น„๋™๊ธฐ

๋™๊ธฐ(Synchronous)

โœ” ๋ชจ๋“  ์ผ์„ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ
โœ” ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋™๊ธฐ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด?

  • ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์ด ์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๋‹ค์Œ ๋กœ์ง์„ ์ฒ˜๋ฆฌ

๋น„๋™๊ธฐ(Asynchronous)

โœ” ์ž‘์—…์„ ์‹œ์ž‘ํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค์Œ ์ž‘์—…์„ ์ฒ˜๋ฆฌ(๋ณ‘๋ ฌ์  ์ˆ˜ํ–‰)

๋น„๋™๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

โœ” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜

  • ์•„์ฃผ ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ ๋’ค ์‹คํ–‰๋˜๋Š” ์•ฑ์ด ์žˆ์„ ๋•Œ ๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๋ถˆ๋Ÿฌ์˜จ ๋’ค์—์•ผ ์•ฑ์˜ ์‹คํ–‰ ๋กœ์ง์ด ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋“ค์€ ๋งˆ์น˜ ์•ฑ์ด ๋ฉˆ์ถ˜ ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒฝํ—˜์„ ๊ฒช๊ฒŒ๋œ๋‹ค.
  • ๋น„๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋จผ์ € ์ฒ˜๋ฆฌ๋˜๋Š” ๋ถ€๋ถ„๋ถ€ํ„ฐ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์— ๊ธ์ •์ ์ธ ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Œ

Single Thread ์–ธ์–ด, JavaScript

โœ” JavaScript๋Š” ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ผ๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š” Single Thread ์–ธ์–ด๋กœ ์›๋ž˜๋Š” ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ž‘์—…์ฒ˜๋ฆฌ ๋ถˆ๊ฐ€

JavaScript Runtime

โœ” JavaScript ๊ฐ€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ํ™˜๊ฒฝ
โœ” JavaScript ์—์„œ ๋น„๋™๊ธฐ์™€ ๊ด€๋ จํ•œ ์ž‘์—…์€ ๋ธŒ๋ผ์šฐ์ € ๋˜๋Š” Node ํ™˜๊ฒฝ์—์„œ ์ฒ˜๋ฆฌ
โœ” ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ์˜ ๋น„๋™๊ธฐ ๋™์ž‘ ๊ตฌ์„ฑ ์š”์†Œ

  1. JavaScript Engine์˜ Call Stack
  2. Web API
  3. Task Queue
  4. Event Loop

๋ธŒ๋ผ์šฐ์ €์—์„œ์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹

image
  1. ๋ชจ๋“  ์ž‘์—…์€ Call Stack(LIFO)๋กœ ๋“ค์–ด๊ฐ„ ํ›„ ์ฒ˜๋ฆฌ๋œ๋‹ค.
  2. ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด Call Stack์œผ๋กœ ๋“ค์–ด์˜ค๋ฉด Web API๋กœ ๋ณด๋‚ด ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌ ํ•˜๋„๋ก ํ•œ๋‹ค.
  3. Web API ์—์„œ ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚œ ์ž‘์—…๋“ค์€ ๊ณง๋ฐ”๋กœ Call Stack์œผ๋กœ ๋“ค์–ด๊ฐ€์ง€ ๋ชปํ•˜๊ณ  Task Queue(FIFO)์— ์ˆœ์„œ๋Œ€๋กœ ๋“ค์–ด๊ฐ„๋‹ค.
  4. Event Loop๊ฐ€ Call Stack์ด ๋น„์–ด์žˆ๋Š” ๊ฒƒ์„ ๊ณ„์† ์ฒดํฌํ•˜๊ณ  Call Stack์ด ๋นˆ๋‹ค๋ฉด Task Queue์—์„œ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ(๊ฐ€์žฅ ์•ž์— ์žˆ๋Š”)์ž‘์—…์„ Call Stack์œผ๋กœ ๋ณด๋‚ธ๋‹ค.

'โญ Personal_Study > Javascript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

AJAX  (0) 2022.11.05
Axios  (0) 2022.11.05
Callback & Promise  (0) 2022.11.04
JavaScript์—์„œ์˜ This  (0) 2022.11.03
Event  (0) 2022.11.02

๋Œ“๊ธ€