瀏覽器的進程和線程

1. 瀏覽器進程

概念:進程是操作系統分配資源的最小單位,每個進程之間有獨立的地址空間

瀏覽器中存在以下進程:

  • 瀏覽器進程:負責頁面顯示、用戶交互、子進程管理等功能
  • 渲染進程:將HTML、CSS、JS轉化爲可交互網頁,默認每個Tab標籤都有一個渲染進程
  • GPU進程,爲了實現頁面繪製和動畫效果而開發的進程
  • 網絡進程,負責頁面網絡資源加載
  • 插件進程,每個插件對應一個進程,防止崩潰影響瀏覽器使用

2. 瀏覽器線程

概念:線程是程序執行的最小單位,一個進程下的所有線程共享該進程的地址空間

  • GUI渲染線程

負責渲染HTML元素,當界面需要重繪或者回流時就會執行,在JS引擎運行腳本期間GUI渲染線程會被掛起(如果同時進行,js可能會在渲染期間對DOM進行操作,造成許多不必要渲染或者衝突)

  • Javascript引擎線程

主要負責處理JS腳本程序,運行代碼,例如V8引擎

爲什麼js是單線程的?
若多個線程同時操作DOM將需要設置鎖來解決問題,從而帶來更大的複雜性

  • 定時觸發器線程

由於JS是單線程的,爲了不阻塞後續代碼執行,將定時計數任務交給定時觸發器線程

  • 事件觸發線程

當一個事件被觸發時該線程會將事件處理函數添加到隊列尾部,等待JS引擎處理

  • 異步http請求線程

創建XMLHttpRequest連接後新開的線程,檢測到狀態變更就會將回調事件放到任務隊列尾部,等待JS引擎執行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章