WebRTC實現(xiàn)了跨平臺(Windows妹卿,MacOS,Linux蔑鹦,IOS夺克,Android)的線程類rtc::Thread,WebRTC內(nèi)部的network_thread嚎朽,worker_thread铺纽,signaling_thread均是該類的實例。該類的源碼位于rtc_base目錄下的thread.h與thread.cc中哟忍。
基礎功能
rtc:: Thread及其相關類狡门,ThreadManager陷寝、MessageQueue,Runnable等等一起提供了如下的基礎功能:
- 線程的管理:通過ThreadManager單例對象其馏,可以管理所有的Thread實例凤跑;
- 線程的常規(guī)基本功能:rtc:: Thread提供創(chuàng)建線程對象,設置線程名稱叛复,啟動線程去執(zhí)行用戶代碼仔引;
- 消息循環(huán),消息投遞:rtc:: Thread通過繼承MessageQueue類褐奥,提供了內(nèi)部消息循環(huán)咖耘,并提供了線程間異步,同步投遞消息的功能撬码;
- 跨線程執(zhí)行方法:提供了跨線程執(zhí)行方法鲤看,并返回執(zhí)行結果的功能。該功能非常強大耍群,因為WebRTC在某些功能模塊的使用上义桂,有要求其必需在指定的線程中才能調(diào)用的基本要求,比如音頻模塊:ADM 的創(chuàng)建必須要在 WebRTC 的 worker thread 中進行蹈垢;
- 多路分離器:通過持有SocketServer對象慷吊,實現(xiàn)了多路分離器的功能,能處理網(wǎng)絡IO曹抬;
類的繼承圖
源碼分析
后續(xù)將分別分析源碼來闡述WebRTC通過上述幾個類來實現(xiàn)上訴功能的溉瓶。