Chormium執行緒模型及應用指南
核心概念
設計上遵循以下原則:
1 不要在UI執行緒做任何阻塞式的I/O操作,以及其它耗時的操作,通過訊息傳遞把各種操作傳給相應用途的執行緒去做。
2 不鼓勵執行緒加鎖機制和執行緒安全物件。物件只存在一個執行緒,通過訊息來實現執行緒之間的通訊,執行緒之間不互相阻塞。通過callback物件實現跨執行緒請求。
一般情況下,我們應該利用一個現有的執行緒,儘量不要建立新的執行緒。UI執行緒實際上會被設定為不允許I/O操作,並且不允許等待。
執行緒列表
核心執行緒列表
所屬程式 | 執行緒名稱 | 型別 | 職責 | 實現 |
---|---|---|---|---|
Browser | UI / BrowserThread | Java | Browser的主執行緒 | content::BrowserThreadImpl |
Browser | Chrome_DBThread | Native | 負責資料庫(SQLite)相關的操作,很多功能的實現會用到該執行緒。 | content::BrowserThreadImpl |
Browser | Chrome_FileThread | Native | 檔案的建立、刪除、讀寫等。 | content::BrowserThreadImpl |
Browser | Chrome_FileUserBlockingThread | Native | 用於讀取與使用者互動有關的資料,需要快速的響應。看到net log模組和appcache有用。 | content::BrowserThreadImpl |
Browser | Chrome_ProcessLauncherThread | Native | 用於啟動和終止子程式。 | content::BrowserThreadImpl |
Browser | Chrome_CacheThread | Native | ||
content::BrowserThreadImpl | ||||
Browser | IndexedDB | Native | IndexDB儲存執行緒。 | base::Thread |
GPU | Chrome_InProcGpuThread | Native | GPU的單程式版本實現。 | content::InProcessGpuThread |
Child Processes | Chrome_ChildIOThread | Native | 子程式的IO執行緒實現。 | base::Thread |
Renderer | Chrome_InProcRendererThread | Native | Renderer程式的單程式版本實現。 | content::InProcessRendererThread |
其它執行緒
執行緒名稱 | Module | 實現 | 說明 |
---|---|---|---|
CookieMonsterClient | CAW | base::Thread | |
CookieMonsterBackend | CAW | base::Thread | |
CookieSyncManager | WebView | Runnable | |
Chrome_libJingle_WorkerThread | Browser | base::Thread | |
Blink Heap Marker Thread (*) | Blink | base::Thread | |
Blink GC Sweeper (*) | Blink | base::Thread | |
HTMLParserThread | Blink | base::Thread | |
AsyncTransferThread | gpu | gpu::TransferThread | |
BrowserBlocking Worker | Browser | base::SequencedWorkerPool | 詳見:Chromium中應用C/C++併發技術要點 |
SimpleCache Worker | net | base::SequencedWorkerPool | |
Network File Thread | net | base::Thread |
執行緒結構
(以單程式模型
相關文章
- 多執行緒應用執行緒
- 執行緒模型執行緒模型
- Reactor執行緒模型及其在Netty中的應用React執行緒模型Netty
- 執行緒建立的函式及應用小結執行緒函式
- 執行緒同步及執行緒鎖執行緒
- 常用高併發網路執行緒模型設計及mongodb執行緒模型優化實踐執行緒模型MongoDB優化
- Dubbo執行緒模型執行緒模型
- WPF執行緒模型執行緒模型
- redis執行緒模型Redis執行緒模型
- osi7層模型及執行緒和程式模型執行緒
- Redis 網路架構及單執行緒模型Redis架構執行緒模型
- 執行緒的建立及執行緒池執行緒
- Python執行緒指南Python執行緒
- 執行緒池的實現原始碼及應用舉例執行緒原始碼
- Redis的執行緒模型Redis執行緒模型
- Dubbo的執行緒模型執行緒模型
- 程式和執行緒模型執行緒模型
- webrtc執行緒模型分析Web執行緒模型
- 理解 RxJava 執行緒模型RxJava執行緒模型
- RxJava 執行緒模型分析RxJava執行緒模型
- Netty執行緒模型Netty執行緒模型
- memcache的執行緒模型執行緒模型
- 03.執行緒模型執行緒模型
- 【原創】Java多執行緒初學者指南(2):用Thread類建立執行緒Java執行緒thread
- 聊聊執行緒技術與執行緒實現模型執行緒模型
- 多執行緒和多程式模型的選用執行緒模型
- ObjC 多執行緒簡析(一)-多執行緒簡述和執行緒鎖的基本應用OBJ執行緒
- Posix執行緒程式設計指南(3)-執行緒同步 (轉)執行緒程式設計
- Android執行緒管理之ThreadLocal理解及應用場景Android執行緒thread
- Android中子執行緒更新主執行緒UI和ProgressBar的應用Android執行緒UI
- 淺談linux執行緒模型和執行緒切換Linux執行緒模型
- 可本地執行大模型的應用大模型
- 多執行緒之共享模型執行緒模型
- Posix執行緒程式設計指南(4)-執行緒終止 (轉)執行緒程式設計
- 執行緒池執行模型原始碼全解析執行緒模型原始碼
- 淺談執行緒池(上):執行緒池的作用及CLR執行緒池執行緒
- 小度分享-【多執行緒工作及執行緒安全】執行緒
- 多執行緒之間通訊及執行緒池執行緒