--- category: Unified tags: [auto-consolidated, technical-documentation] title: [[Main Thread|Main Thread]] last_updated: 2026-05-02 --- # [[Main Thread|Main Thread]] ## πŸ“Œ Brief Summary > Main Thread(메인 μŠ€λ ˆλ“œ)λŠ” μ›Ή λΈŒλΌμš°μ €μ—μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈ μ‹€ν–‰, λ Œλ”λ§, 이벀트 처리 λ“± 핡심 μž‘μ—…μ΄ 순차적으둜 μ‹€ν–‰λ˜λŠ” 단일 μž‘μ—… 흐름을 μ˜λ―Έν•©λ‹ˆλ‹€ [1, 2]. [[WebGL|WebGL]]κ³Ό 같은 ν™˜κ²½μ—μ„œλŠ” κ·Έλž˜ν”½ λͺ…λ Ήμ–΄ μ œμΆœμ„ λΉ„λ‘―ν•œ 무거운 연산이 메인 μŠ€λ ˆλ“œμ—μ„œ μ΄λ£¨μ–΄μ§ˆ 경우 λ Œλ”λ§ νŒŒμ΄ν”„λΌμΈμ΄ μ°¨λ‹¨λ˜μ–΄ μ§€μ—°(Latency)κ³Ό 병λͺ© ν˜„μƒμ΄ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€ [1, 2]. [[Chrome DevTools|Chrome DevTools]]와 같은 μ„±λŠ₯ 뢄석 도ꡬλ₯Ό 톡해 메인 μŠ€λ ˆλ“œμ˜ ν™œλ™μ„ μ‹œκ°μ μœΌλ‘œ μΆ”μ ν•˜κ³  병λͺ© 지점을 μ΅œμ ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3-5]. --- 메인 μŠ€λ ˆλ“œλŠ” λΈŒλΌμš°μ €κ°€ HTML을 νŒŒμ‹±ν•˜μ—¬ DOM 트리λ₯Ό κ΅¬μΆ•ν•˜κ³ , μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ‹€ν–‰ν•˜λ©°, νŽ˜μ΄μ§€μ˜ λ ˆμ΄μ•„μ›ƒκ³Ό 페인트λ₯Ό ν¬ν•¨ν•œ λ Œλ”λ§μ„ μ²˜λ¦¬ν•˜λŠ” 핡심 단일 μŠ€λ ˆλ“œμž…λ‹ˆλ‹€ [1-4]. λΈŒλΌμš°μ €λŠ” 기본적으둜 단일 μŠ€λ ˆλ“œ κ΅¬μ‘°μ΄λ―€λ‘œ, 메인 μŠ€λ ˆλ“œκ°€ μž‘μ—…μ„ μ§„ν–‰ 쀑일 λ•ŒλŠ” λ‹€λ₯Έ μš”μ²­μ΄λ‚˜ μ‚¬μš©μž μƒν˜Έμž‘μš©μ„ λ™μ‹œμ— μ²˜λ¦¬ν•  수 μ—†μŠ΅λ‹ˆλ‹€ [1, 5]. λ”°λΌμ„œ 메인 μŠ€λ ˆλ“œμ˜ 점유 μ‹œκ°„μ„ μ΅œμ†Œν™”ν•˜κ³  μ±…μž„μ„ μ€„μ΄λŠ” 것이 λΉ λ₯΄κ³  λ°˜μ‘μ„± 높은 μ›Ή μ„±λŠ₯을 ν™•λ³΄ν•˜λŠ” 핡심 μš”κ±΄μž…λ‹ˆλ‹€ [1]. ## πŸ“– Core Content * **단일 μŠ€λ ˆλ“œ ꡬ쑰와 병λͺ© ν˜„μƒ:** WebGL은 단일 μŠ€λ ˆλ“œ(Single-threaded) ν™˜κ²½μ—μ„œ μž‘λ™ν•˜λ―€λ‘œ λͺ¨λ“  λ“œλ‘œμš° 콜([[Draw Call|Draw Call]]), μƒνƒœ λ³€κ²½, λ¦¬μ†ŒμŠ€ μ—…λ‘œλ“œκ°€ 메인 μŠ€λ ˆλ“œμ—μ„œ 순차적으둜 μ‹€ν–‰λ©λ‹ˆλ‹€ [2]. 이둜 인해 μžλ°”μŠ€ν¬λ¦½νŠΈ 싀행에 κ³Όλ„ν•œ μ‹œκ°„μ΄ μ†Œμš”λ˜λ©΄ 메인 μŠ€λ ˆλ“œκ°€ 차단(blocked)되고 λ Œλ”λ§ νŒŒμ΄ν”„λΌμΈμ΄ μ§€μ—°λ˜λŠ” 병λͺ© ν˜„μƒμ΄ λ°œμƒν•˜λ©°, GPUλŠ” λ‹€μŒ λͺ…령을 기닀리며 유휴 μƒνƒœ(idle)둜 λ‚¨κ²Œ λ©λ‹ˆλ‹€ [1, 2, 6, 7]. * **μ„±λŠ₯ λͺ¨λ‹ˆν„°λ§ 및 진단:** [[Chrome|Chrome]] DevTools의 Performance νŒ¨λ„μ—μ„œ 'Main' νŠΈλž™μ„ μ‚¬μš©ν•˜λ©΄ 메인 μŠ€λ ˆλ“œμ˜ ν™œλ™μ„ μ‹œκ°„μ˜ 흐름에 λ”°λ₯Έ ν”Œλ ˆμž„ 차트([[Flame Chart|Flame Chart]]) ν˜•νƒœλ‘œ 뢄석할 수 μžˆμŠ΅λ‹ˆλ‹€ [3-5]. κ°œλ°œμžλŠ” 이λ₯Ό 톡해 16.67ms의 ν”„λ ˆμž„ μ˜ˆμ‚°μ„ μ΄ˆκ³Όν•˜μ—¬ 메인 μŠ€λ ˆλ“œλ₯Ό μ°¨λ‹¨ν•˜λŠ” ꡬ체적인 μžλ°”μŠ€ν¬λ¦½νŠΈ ν•¨μˆ˜λ₯Ό μ‹λ³„ν•˜κ³  [8], 50msλ₯Ό μ΄ˆκ³Όν•˜λŠ” κΈ΄ μž‘μ—…([[Long Tasks|Long Tasks]])을 νŒŒμ•…ν•˜μ—¬ μ„±λŠ₯ μ €ν•˜μ˜ 원인을 진단할 수 μžˆμŠ΅λ‹ˆλ‹€ [9, 10]. * **μ΅œμ ν™” 및 [[WebGPU|WebGPU]]둜의 μ „ν™˜:** 메인 μŠ€λ ˆλ“œμ˜ 차단을 λ°©μ§€ν•˜μ—¬ μƒν˜Έμž‘μš©μ„±(Responsiveness)을 높이렀면, 무거운 μžλ°”μŠ€ν¬λ¦½νŠΈ μž‘μ—…μ„ 더 μž‘μ€ 비동기 쑰각으둜 λ‚˜λˆ„κ±°λ‚˜ μ›Ή μ›Œμ»€(Web Workers)λ₯Ό ν™œμš©ν•˜μ—¬ 메인 μŠ€λ ˆλ“œμ—μ„œ μž‘μ—…μ„ 뢄리해야 ν•©λ‹ˆλ‹€ [9]. μ΅œκ·Όμ—λŠ” μ΄λŸ¬ν•œ 메인 μŠ€λ ˆλ“œ 병λͺ© ν˜„μƒμ„ 근본적으둜 ν•΄κ²°ν•˜κΈ° μœ„ν•΄, μ• λ‹ˆλ©”μ΄μ…˜ 둜직과 λͺ…λ Ήμ–΄ 생성을 닀쀑 μŠ€λ ˆλ“œ(Multi-Threaded)둜 λΆ„μ‚°ν•˜κ³  μž‘μ—…μ„ GPU둜 μ˜€ν”„λ‘œλ“œν•  수 μžˆλŠ” WebGPU 기술이 λ„μž…λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€ [11, 12]. --- - **μ£Όμš” μ—­ν•  및 병λͺ© ν˜„μƒ** 메인 μŠ€λ ˆλ“œλŠ” DOM 트리 생성, μžλ°”μŠ€ν¬λ¦½νŠΈ 컴파일 및 해석(μ›Ή μ›Œμ»€ λ“± 일뢀 μ˜ˆμ™Έ μ œμ™Έ), ν™”λ©΄ λ Œλ”λ§ λ“± λΈŒλΌμš°μ €μ˜ λŒ€λΆ€λΆ„μ˜ μ£Όμš” μž‘μ—…μ„ μ „λ‹΄ν•©λ‹ˆλ‹€ [2-4]. 초기 λ‘œλ“œ κ³Όμ •μ΄λ‚˜ 무거운 μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμ‹± 및 μ‹€ν–‰μœΌλ‘œ 인해 메인 μŠ€λ ˆλ“œκ°€ μ˜€λž«λ™μ•ˆ 점유될 경우, μ‚¬μš©μžμ˜ ν΄λ¦­μ΄λ‚˜ 슀크둀과 같은 μƒν˜Έμž‘μš© μ΄λ²€νŠΈμ— 50ms μ΄λ‚΄λ‘œ λ°˜μ‘ν•˜μ§€ λͺ»ν•˜κ²Œ λ˜μ–΄ UIκ°€ μ§€μ—°(Jank)λ˜κ±°λ‚˜ 멈좘 κ²ƒμ²˜λŸΌ λŠκ»΄μ§€κ²Œ λ©λ‹ˆλ‹€ [6, 7]. 특히 초기 λ‘œλ“œ 쀑 메인 μŠ€λ ˆλ“œμ—μ„œμ˜ κ³Όλ„ν•œ μ²˜λ¦¬λŠ” μ½”μ–΄ μ›Ή λ°”μ΄νƒˆ([[Core Web Vitals|Core Web Vitals]]) 수치 ν•˜λ½κ³Ό 검색 μˆœμœ„(SEO) νŽ˜λ„ν‹°λ‘œ μ΄μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€ [8]. - **μ„±λŠ₯ μ˜ˆμ‚°(Frame [[Budget|Budget]])κ³Ό λ°˜μ‘μ„±** μ• λ‹ˆλ©”μ΄μ…˜κ³Ό μŠ€ν¬λ‘€μ„ 60fps둜 λΆ€λ“œλŸ½κ²Œ μœ μ§€ν•˜λ €λ©΄, 메인 μŠ€λ ˆλ“œλ₯Ό μ°¨μ§€ν•˜λŠ” μŠ€νƒ€μΌ 계산, λ¦¬ν”Œλ‘œμš°(Reflow), 페인트(Paint) λ“±μ˜ μž‘μ—…μ΄ 16.67ms 이내에 μ™„λ£Œλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€ [9, 10]. 규λͺ¨κ°€ 큰 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ λ Œλ”λ§μ΄ 이 16.6ms ν”„λ ˆμž„ μ˜ˆμ‚°μ„ μ΄ˆκ³Όν•˜λ©΄ 메인 μŠ€λ ˆλ“œκ°€ λΈ”λ‘œν‚Ήλ˜μ–΄ UIκ°€ μ‚¬μš©μž μž…λ ₯에 λ°˜μ‘ν•  수 μ—†κ²Œ λ©λ‹ˆλ‹€ [9]. - **메인 μŠ€λ ˆλ“œ λΆ€ν•˜ μ™„ν™” 및 μ΅œμ ν™” μ „λž΅** - **[[React Fiber|React Fiber]]와 λ™μ‹œμ„± λ Œλ”λ§([[Concurrent Rendering|Concurrent Rendering]]):** 기쑴의 동기적 λ Œλ”λ§μ΄ 메인 μŠ€λ ˆλ“œλ₯Ό μž₯μ‹œκ°„ μ°¨λ‹¨ν•˜λŠ” 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄, ReactλŠ” λ Œλ”λ§ μž‘μ—…μ„ 'Fiber λ…Έλ“œ'λΌλŠ” μž‘μ€ μž‘μ—… λ‹¨μœ„λ‘œ λ‚˜λˆ„μ–΄ μ‹€ν–‰ν•˜κ³  μš°μ„ μˆœμœ„κ°€ 높은 μž‘μ—…μ΄ μžˆμ„ λ•Œ λΈŒλΌμš°μ €μ— μ œμ–΄κΆŒμ„ 양보(Yield)ν•˜λŠ” μ•„ν‚€ν…μ²˜λ₯Ό λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€ [9]. - **[[React 19|React 19]] λ™μ‹œμ„± ν›…:** `useTransition`μ΄λ‚˜ `[[useDeferredValue|useDeferredValue]]`λ₯Ό μ‚¬μš©ν•˜μ—¬ 무거운 μƒνƒœ μ—…λ°μ΄νŠΈλ₯Ό μ§€μ—°μ‹œν‚΄μœΌλ‘œμ¨, νƒ€μ΄ν•‘μ΄λ‚˜ 클릭 λ“± κΈ΄κΈ‰ν•œ μ‚¬μš©μž μƒν˜Έμž‘μš©μ„ μœ„ν•΄ 메인 μŠ€λ ˆλ“œλ₯Ό λΉ„μ›Œλ‘μ–΄ INP(Interaction to Next Paint) 점수λ₯Ό ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€ [11, 12]. - **μ„œλ²„ μ»΄ν¬λ„ŒνŠΈ(RSC):** μƒν˜Έμž‘μš©μ΄ μ—†λŠ” μ»΄ν¬λ„ŒνŠΈλ₯Ό μ„œλ²„μ—μ„œ λ Œλ”λ§ν•¨μœΌλ‘œμ¨ ν΄λΌμ΄μ–ΈνŠΈ λΈŒλΌμš°μ €λ‘œ μ „μ†‘λ˜λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ λ²ˆλ“€ 양을 쀄이고, 결과적으둜 μƒν˜Έμž‘μš© μ‹œ 메인 μŠ€λ ˆλ“œκ°€ μ²˜λ¦¬ν•΄μ•Ό ν•  μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 양을 μ€„μ—¬μ€λ‹ˆλ‹€ [13]. - **GPU μ»΄ν¬μ§€νŒ…(Compositing):** μ• λ‹ˆλ©”μ΄μ…˜μ΄λ‚˜ μ „ν™˜ 효과 등을 λΈŒλΌμš°μ €κ°€ κ°œλ³„ λ ˆμ΄μ–΄λ‘œ λΆ„λ¦¬ν•˜μ—¬ 메인 μŠ€λ ˆλ“œ(CPU) λŒ€μ‹  GPUμ—μ„œ 그리도둝(Paint) μŠΉκ²©μ‹œν‚€λ©΄, 메인 μŠ€λ ˆλ“œλ₯Ό ν•΄λ°©μ‹œν‚€κ³  μ„±λŠ₯을 크게 ν–₯상할 수 μžˆμŠ΅λ‹ˆλ‹€ [4, 14]. ## βš–οΈ Trade-offs & Caveats - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** AI λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— Knowledge Connections - **Related Topics:** [[WebGL|WebGL]], [[WebGPU|WebGPU]], Total Blocking Time (TBT), [[Interaction to Next Paint (INP)|Interaction to Next Paint (INP)]], [[Long Tasks|Long Tasks]] - **Projects/Contexts:** Chrome DevTools [[Performance Panel|Performance Panel]], [[Core Web Vitals|Core Web Vitals]] - **Contradictions/Notes:** μ†ŒμŠ€λŠ” WebGL이 메인 μŠ€λ ˆλ“œμ—μ„œ 순차적으둜 κ·Έλž˜ν”½ λͺ…령을 μ²˜λ¦¬ν•˜μ—¬ CPU 병λͺ©μ„ μœ λ°œν•œλ‹€κ³  μ£Όμž₯ν•˜λŠ” 반면, μƒˆλ‘œμš΄ WebGPUλŠ” 닀쀑 μŠ€λ ˆλ“œ λͺ…λ Ή 생성(Multi-Threaded Command Generation)을 μ§€μ›ν•˜μ—¬ 메인 μŠ€λ ˆλ“œμ˜ μ˜€λ²„ν—€λ“œλ₯Ό λŒ€ν­ 쀄일 수 μžˆλ‹€κ³  λŒ€μ‘°ν•˜μ—¬ μ„€λͺ…ν•©λ‹ˆλ‹€ [2, 11, 12]. --- *Last updated: 2026-04-19* --- --- - **Related Topics:** 단일 μŠ€λ ˆλ“œ (Single-threaded), [[React Fiber|React Fiber]], [[동사ᄉα…₯α†Ό 렌ᄃα…₯α„…α…΅α†Ό (Concurrent Rendering)|λ™μ‹œμ„± λ Œλ”λ§ (Concurrent Rendering]] - **Projects/Contexts:** μ›Ή μ„±λŠ₯ μ΅œμ ν™” (Web Performance [[Optimization|Optimization]]), Core Web Vitals (INP, TTI) - **Contradictions/Notes:** μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. --- *Last updated: 2026-04-25*