event-loop
Last updated
Was this helpful?
Last updated
Was this helpful?
What the heck is the event loop anyway? | Philip Roberts | JSConf EU λ₯Ό ν΅ν΄ λ°°μ΄ λ΄μ©μ μ 리 λ§€μ°κ°μΆ
A single-threaded non-blocking asynchronous concurrent language. μ±κΈ μ€λ λ λ Ό λΈλ‘νΉ λΉλκΈ° λμ μΈμ΄
JavaScript has Call stack, an event loop, a callback queue some other apis and stuff
μ¬κΈ°μ μλ λ¨μ΄λ€μ νλμ© νμ ν΄ λ³΄μ!
μ±κΈ μ€λ λ
λΈλ‘νΉ
λΉλκΈ°
call stack
event loop
callback queue
apis
event loopλ₯Ό μν΄.. μμμΌ ν κ² μ°Έ λ§κ΅¬λ.
νλμ νλ‘κ·Έλ¨μ λμμ νλμ μ½λλ§ μ€νν μ μλ€. μλ°μ€ν¬λ¦½νΈλ μ±κΈ μ€λ λ λ°νμμ κ°μ§κ³ μμ΄, κ²°κ΅ νλ²μ νλμ μ±κΈ μ½ μ€νλ§μ κ°μ§κ³ μλ€. μλ°μ€ν¬λ¦½νΈλ μ±κΈμ€λ λλ€.
λλ¦¬κ² λμνλ μ½λ, μ£Όλ‘ λλ¦° λμμ΄ μ€νμ λ¨μμλ κ²½μ°λ₯Ό λ§νλ€. μλ°μ€ν¬λ¦½νΈλ λ Ό-λΈλ‘νΉμ΄λ€.
μΉ λΈλΌμ°μ λ₯Ό λ§λλ λ° κΈ°λ°μ μ 곡νλ μ€ν μμ€ μλ°μ€ν¬λ¦½νΈ μμ§μ΄λ€.(μν€λ°±κ³Όμ°Έμ‘°) ν¬λ‘¬κ³Ό node.jsμμ μ¬μ©λλ€.
νλ‘κ·Έλ¨μ΄ μ€νλκ³ μμ λ μ‘΄μ¬νλ κ³³μ λ§νλ€. μ΄ μ΄λ―Έμ§λ V8μ λ°νμμ μκ°ν ν κ²μ΄λ€.
Memory Heap: λ©λͺ¨λ¦¬ ν λΉμ΄ μ΄λ£¨μ΄μ§λ κ³³(μλ£κ΅¬μ‘° heapμ΄λμ λ€λ₯΄λ€.)
Call Stack: μ½λκ° μ€νλλ©΄ μ€ν νλ μμ΄ μμ΄λ κ³³
V8 μμ€μλ setTimeout μ΄λ DOM, HTTP μμ²μ κ΄λ¦¬νλ μ½λλ€μ μ°Ύμ λ³Ό μ μλ€! λΉλκΈ° μ½λ©μμ κ°μ₯ λ¨Όμ λ μ€λ₯΄λ κ²λ€μ΄ μλκ±°λ€.
λΈλΌμ°μ λ Web APIs(DOM, Ajax, timeout λ±)μ event loopμ callback queueλ₯Ό κ°μ§κ³ μλ€.
μ½ μ€νμ λ°μ΄ν° μ€νΈλμ²λ‘ μ€νλλ μμλ₯Ό κΈ°μ΅νκ³ μλ€. ν¨μλ₯Ό μ€ννλ €λ©΄ μ€νμ ν΄λΉνλ ν¨μλ₯Ό μ§μ΄λ£κ² λλλ° ν¨μμμ 리ν΄μ΄ μΌμ΄λλ©΄ μ€νμ κ°μ₯ μμͺ½μμ ν΄λΉ ν¨μλ₯Ό κΊΌλ΄κ² λλ€. μ΄κ² μ½μ€ν!
ν¨μλ€μ΄ μ€μμ κΈ°λ€λ¦¬λ 곡κ°μ΄λ€.
μλ°μ€ν¬λ¦½νΈ μ±μ§. νλ² μ€νλλ©΄ λμ₯μ λ³Έλ€.
λ¨κ³λ¨κ³ λμ₯μ λ΄μΌ λ€μ μμκ° μ€νλ μ μλ€.
μ΄λ° ν¨μκ° μλλ° μ€ν -> μ½λ°± νλ‘ κ°λ μκ°λ ν¬ν¨λλ€.
보μ¬μ§ μμ λ€μ μ€ μΈμ΄λ€.
λ°μ΄νΈλ‘ λ¨Όμ λ°λλ€ -> λ¬Έμλ‘ λ³κ²½λλ€ -> tokenν νλ€. λ Έλλ‘ λ§λ€κΈ° μ μ²λ¦¬ μ -> node(κ°μ²΄λ‘ νλνλ λ§λ λ€) -> νΈλ¦¬κ΅¬μ‘°λ‘ λ§λ λ€.
DOM νΈλ¦¬ + CSSOM νΈλ¦¬ => Render Tree -> layout -> paint
Records
layout
paint - μ€μ λ‘ ν½μ μ μ±μκ°λ.
μλ¨μ μλ κ·Έλνκ° λκΈ° / μλκ° λΉλκΈ°λ€. λκΈ°λ μ€μ§ νκ°μ§ μΌλ§ μ²λ¦¬νλ©° λ§λ₯ λλ λκΉμ§ κΈ°λ€λ €μΌ νλ€.