λΉλκΈ° νλ‘κ·Έλλ°
λκΈ° μ²λ¦¬μ λΉλκΈ° μ²λ¦¬
μ€ν 컨ν μ€νΈ κ°λ μκ³ κ°κΈ°
- ν¨μ νΈμΆ μ μ½λκ° νκ° λμ΄ μ½μ€νμ νΈμ λκ³ ν¨μ μ½λ μ€νμ΄ μ’ λ£ λλ©΄ ν¨μ μ€ν 컨ν μ€νΈλ μ€νμμ νλμ΄ μ κ±° λ¨
- ν¨μ μ½λ νκ° κ³Όμ μ ν΅ν΄ ν¨μ μ€ν 컨ν μ€νΈ μμ± λ¨
- μ¦, μ½μ€νμ ν¨μ μ€ν 컨ν μ€νΈ νΈμ λ¨ === ν¨μ μ€νμ μμμ μλ―Έ
- ν¨μμ μ€ν μμλ μ€ν컨ν μ€νΈ μ€ν μΌλ‘ κ΄λ¦¬ λ¨
λκΈ° μ²λ¦¬ λ°©μ μ΄ν΄
- μλ°μ€ν¬λ¦½νΈ μμ§μ λ¨ νλμ μ€ν 컨ν μ€νΈ μ€ν κ°λλ€
- λμμ 2κ° μ΄μμ ν¨μλ₯Ό μ€νν μ μλ€λ κ²μ μλ―Έ
- μ€ν 컨ν
μ€νΈμ μ΅μμ (μ€ν μ€μΈ ν¨μ)λ₯Ό μ μΈνκ³ λͺ¨λ μ€ν λκΈ° μ€μΈ νμ€ν¬(
Task
) - μλ° μ€ν¬λ¦½νΈ μμ§μ ν λ²μ νλμ νμ€ν¬λ§ μ€νν μ μλ μ±κΈ μ€λ λ(
single thread
) λ°©μμΌλ‘ λμ - μ±κΈ μ€λ λ λ°©μμ κ²½μ° μ²λ¦¬μ μκ°μ΄ 걸리λ νμ€ν¬λ₯Ό μ€ν νλ κ²½μ° λΈλ‘νΉ(
blocking
, μμ μ€λ¨)
μ 리
νμ¬ μ€ν μ€μΈ νμ€ν¬κ° μ’ λ£ν λκΉμ§ λ€μμ μ€ν λ νμ€ν¬κ° λκΈ°νλ λ°©μμ λκΈ°(synchronous
) μ²λ¦¬ λΌκ³ νλ€.
μ€ν μμ 보μ₯λλ μ₯μ μμ§λ§ λκΈ° μ€μΈ νμ€ν¬λ€μ΄ λΈλ‘νΉ λλ λ¨μ μ΄ μλ€.
λΉλκΈ° μ²λ¦¬ λ°©μ μ΄ν΄
setTimeout
ν¨μ κ²½μ° λΉλκΈ° λ°©μμΌλ‘ λμ
function foo() {
console.log('foo');
}
function bar() {
console.log('bar');
}
// νμ΄λ¨Έ ν¨μ setTimeoutμ μΌμ μκ°μ΄ κ²½κ³Όν μ΄νμ μ½λ°± ν¨μ fooλ₯Ό νΈμΆνλ€.
// νμ΄λ¨Έ ν¨μ setTimeoutμ bar ν¨μλ₯Ό λΈλ‘νΉνμ§ μλλ€.
setTimeout(foo, 3 * 1000);
bar();
// bar νΈμΆ -> (3μ΄ κ²½κ³Ό ν) foo νΈμΆ
- μ€ν μ€μΈ νμ€ν¬κ° μ’
λ£ λμ§ μμ μνλΌ ν΄λ λ€μ νμ€ν¬λ₯Ό 곧λ°λ‘ μ€ννλ λ°©μμ λΉλκΈ°(
asynchronous
) μ²λ¦¬ λΌκ³ νλ€. - λκΈ° μ²λ¦¬ λ°©μκ³Ό λ°λλ‘ λΈλ‘νΉ λμ§ μλ μ₯μ , μ€ν μμ 보μ₯ λμ§ μλ λ¨μ κ°μ§
- νμ΄λ¨Έ ν¨μ(
setTimeout
,setInterval
),HTTP
μμ², μ΄λ²€νΈ νΈλ€λ¬λ λΉλκΈ° μ²λ¦¬ λ°©μμΌλ‘ λμ
μ΄λ²€νΈ 루νμ νμ€ν¬ ν
λ²€νΈ λ£¨νλ λΈλΌμ°μ μ λ΄μ₯λμ΄ μλ κΈ°λ₯
μλ°μ€ν¬λ¦½νΈλ μ±κΈ μ€λ λ λ°©μμΌλ‘ λμνμ§λ§ μ΄λ²€νΈ 루νλ₯Ό ν΅ν΄ λμμ νμ€ν¬λ₯Ό μ²λ¦¬νλ κ²μ²λΌ λμ κ°λ₯
μλ°μ€ν¬λ¦½νΈ μμ§μ ν¬κ² 2κ°μ μμ(μ½μ€ν, ν)μΌλ‘ ꡬλΆ
μ½ μ€ν(
call stack
)- μμ€μ½λ νκ° κ³Όμ μμ μμ±λ μ€ν 컨νμ€νΈκ° μΆκ°λκ±° μ κ±°λλ μ€ν 컨ν μ€νΈ μ€νμ λ§ν¨
- μλ° μ€ν¬λ¦½νΈ μμ§μ λ¨ νλμ μ½μ€νμ μ¬μ©
- μ΅μμ μ€ν 컨ν μ€νΈκ° μ’ λ£λμ΄ μ½ μ€νμμ μ κ±°λκΈ° μ κΉμ§λ μ΄λ€ νμ€ν¬λ μ€νλμ§ μλλ€.
ν(
heap
)- νμ κ°μ²΄κ° μ μ₯λλ λ©λͺ¨λ¦¬ 곡κ°
- μ½ μ€νμ μμμΈ μ€ν 컨ν μ€νΈλ νμ μ μ₯λ κ°μ²΄λ₯Ό μ°Έμ‘°
- κ°μ²΄λ μμκ°κ³Ό λ¬λ¦¬ ν¬κΈ°κ° μ ν΄μ Έ μμ§ μκ³ λ°νμμ λμ μΌλ‘ κ²°μ
- μ¦, νμ ꡬ쑰ν λμ΄ μμ§ μμ
μ¦, μλ°μ€ν¬λ¦½νΈ μμ§μ μ½ μ€ν ν΅ν΄ μμ²λ μμ μ μμ°¨μ μΌλ‘ μ€ν ν λΏ
λΉλκΈ° μ²λ¦¬μμ νκ°μ μ€νμ μ μΈν λͺ¨λ μ리λ λΈλΌμ°μ λλ
nodeJS
μμ λ΄λΉ
μ΄λ₯Ό μν΄ λΈλΌμ°μ νκ²½μ νμ€ν¬ νμ μ΄λ²€νΈ 루νλ₯Ό μ 곡
νμ€ν¬ ν(
task queue
)- λΉλκΈ° μ½λ°± ν¨μ λλ μ΄λ²€νΈ νΈλ€λ¬κ° μΌμμ μΌλ‘ 보κ΄λλ μμ
- νλ‘λ―Έμ€μ νμ μ²λ¦¬ λ©μλμ μ½λ°± ν¨μκ° μΌμμ μΌλ‘ λ³΄κ΄ λλ λ§μ΄ν¬λ‘ νμ€ν¬ νλ μ‘΄μ¬
μ΄λ²€νΈ 루ν(
event loop
)- μ΄λ²€νΈ 루νλ μ½ μ€νμμ νμ¬ μ€ν μ€μΈ 컨ν μ€νΈκ° μλμ§, νμ€ν¬ νμ λκΈ° μ€μΈ ν¨μκ° μλμ§ λ°λ³΅ν΄μ νμΈ
- μ½ μ€νμ΄ λΉμ΄μκ³ νμ€ν¬ νμ λκΈ° μ€μΈ ν¨μκ° μλ€λ©΄ μ΄λ²€νΈ 루νλ μμ°¨μ μΌλ‘ νμ€ν¬ νμ λκΈ° μ€μΈ ν¨μλ₯Ό μ½ μ€νμΌλ‘ μ΄λ μν¨λ€.
μ 리
μλ°μ€ν¬λ¦½νΈλ μ±κΈ μ€λ λ λ°©μμΌλ‘ λμ
μ΄λ μ±κΈ μ€λ λλ‘ λμνλ κ²μ λΈλΌμ°μ κ° μλλΌ λΈλΌμ°μ μ λ΄μ₯λ μλ°μ€ν¬λ¦½νΈ μμ§
μλ°μ€ν¬λ¦½νΈ μμ§μ μ±κΈ μ€λ λλ‘ λμ νμ§λ§ λΈλΌμ°μ λ λ©ν° μ€λ λλ‘ λμ
'javascript > π study' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[10μ£Όμ°¨ μ€ν°λ]44μ₯-REST API (0) | 2022.04.02 |
---|---|
[10μ£Όμ°¨ μ€ν°λ]43μ₯-Ajax (0) | 2022.04.02 |
[9μ£Όμ°¨ μ€ν°λ]41μ₯-νμ΄λ¨Έ (0) | 2022.03.27 |
[9μ£Όμ°¨ μ€ν°λ]40μ₯-μ΄λ²€νΈ (0) | 2022.03.27 |
[8μ£Όμ°¨ μ€ν°λ]39μ₯-DOM (0) | 2022.03.27 |
λκΈ