WebRTC線程的啟動與運行

在這里插入圖片描述

WebRTC線程運行的基本邏輯:

while(true)
{Get(&msg,);Dispatch(&msg);}Dispatch(Message *pmsg) {…pmsg->handler->OnMessage(pmsg);}

在執行函數內部,就是一個while死循環,只做兩件事,從隊列里Get取出消息,然后調用Dispatch處理消息。
在Dispatch函數中會調用入參*pmsg消息的handler的OnMessage處理消息,
具體如何處理消息,每一個pmsg內部有不同的邏輯,
就是把控制權交給的發送線程,發送線程在執行時它是知道需要做什么事的,但是這個事情需要交給其他的線程來做,
但是執行線程是不知道發送線程要執行怎樣的邏輯,那么最好的方法就是發送線程將執行的邏輯寫好,執行線程只要按照發送線程的要求去執行任務就OK了。

【編程思想】

因此,要弄明白正在處理的業務邏輯,必須要從發送線程著手,而不是工作線程,因為工作線程并不清楚它在做什么。

WebRTC中的具體代碼實現:

// src/rtc_base/thread.cc
Thread::Start() {pthread_ = pthread_create(PreRun);
}Thread::PreRun() {Thread *thread = static_cast<>();ThreadManager::Instance()->SetCurrentThread(thread); // 將本線程設置到ThreadManager中,與Thread對象進行綁定,這也說明綁定的時機是在pthread創建成功之后thread->Run();
}Thread::Run() {ProcessMessages(kForever);
}Thread::ProcessMessages() {while(true) {Get(&msg);Dispatch(&msg);}
}Thread::Dispatch(Message *pmsg) {pmsg->handler->OnMessage(pmsg);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64848.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64848.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64848.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CSS 學習之 padding 與圖形繪制

padding 屬性和 background-clip 屬性配合&#xff0c;可以在有限的標簽下實現一些 CSS 圖形繪制效果&#xff0c;我這里舉兩個小例子&#xff0c;重在展示可行性。 例 1:不使用偽元素&#xff0c;僅一層標簽實現大隊長的“三道杠”分類圖標效果。此效果在移動端比較常見&…

yolov5核查數據標注漏報和誤報

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、誤報二、漏報三、源碼總結 前言 本文主要用于記錄數據標注和模型預測之間的漏報和誤報思想及其源碼 提示&#xff1a;以下是本篇文章正文內容&#xff0c;…

UnityRenderStreaming使用記錄(四)

測試把UnityRenderStreaming部署在docker&#xff0c;劇透一下&#xff0c;嘎了…… 當然webserver運行的妥妥的 那么打包出的程序運行log Mono path[0] /home/unity/Broadcast/Broadcast_Data/Managed Mono config path /home/unity/Broadcast/Broadcast_Data/MonoBleedingE…

salesforce addMonths()的問題

如果使用 Salesforce 的 addMonths(1) 方法&#xff0c;將 1月30日 或 1月31日 加一個月&#xff0c;都會得到 2月28日&#xff08;或 2月29日&#xff0c;如果是閏年&#xff09;。這是因為 Salesforce 的 addMonths 方法在跨月份時會自動調整日期&#xff0c;確保結果是有效日…

3. C語言 數據類型

本章目錄&#xff1a; 前言&#xff1a;C語言中的數據類型分類1. 基本數據類型1.1 整數類型1.2 浮點類型1.3 字符型常量1.4 字符串常量 2. 枚舉類型3. void 類型void類型的使用示例&#xff1a; 4. 類型轉換4.1 隱式類型轉換4.2 顯式類型轉換類型轉換的注意事項 5. 小結 前言&a…

JUnit注解,枚舉

一、JUnit注解&#xff08;Annotations&#xff09; JUnit 是 Java 中用于編寫和運行單元測試的框架。JUnit 提供了許多注解&#xff0c;用于控制測試的執行順序、測試生命周期、斷言結果等。以下是一些常用的 JUnit 注解及其作用&#xff1a; 1. Test 用于標記一個方法是測…

富芮坤FR800X系列之軟件開發工具鏈(如IDE、編譯器、調試器等)

文章目錄 一、IDE&#xff08;集成開發環境&#xff09;二、編譯器三、調試器四、其他輔助工具五、小結 FR800x系列作為一款低功耗藍牙芯片&#xff0c;其軟件開發工具鏈對于開發者來說至關重要。以下是對FR800x軟件開發工具鏈的詳細介紹&#xff0c;包括IDE&#xff08;集成開…

數據賦能電商:API如何助力品牌成長

在數字時代&#xff0c;數據已成為電商品牌發展的核心驅動力。API&#xff08;應用程序編程接口&#xff09;作為數據交互的橋梁&#xff0c;不僅促進了數據的高效流通&#xff0c;更為電商品牌帶來了前所未有的增長機遇。本文將深入探討API如何助力電商品牌實現數據賦能&#…

「Java 數據結構全面解讀」:從基礎到進階的實戰指南

「Java 數據結構全面解讀」&#xff1a;從基礎到進階的實戰指南 數據結構是程序設計中的核心部分&#xff0c;用于組織和管理數據。Java 提供了豐富的集合框架和工具類&#xff0c;涵蓋了常見的數據結構如數組、鏈表、棧、隊列和樹等。本文將系統性地介紹這些數據結構的概念、…

LeetCode - 初級算法 數組(旋轉數組)

旋轉數組 這篇文章討論如何通過編程實現數組元素的旋轉操作。 免責聲明:本文來源于個人知識與公開資料,僅用于學術交流。 描述 給定一個整數數組 nums,將數組中的元素向右輪轉 k 個位置,其中 k 是非負數。 示例: 輸入: nums = [1,2,3,

c#集合詳解-Dictionary、List、Queue、Stack等

目錄 一&#xff0c;非泛型集合 1&#xff0c;ArrayList &#xff08;1&#xff09;創建和初始化ArrayList() &#xff08;2&#xff09;常用方法 ①Add(value) ②AddRange(value) ③Insert(index,value) ④Remove(value) ⑤RemoveAt(index) ⑥clear() ⑦Contains(v…

記一次網閘部署經歷

1.在成功獲取某大廠偉思網閘設備&#xff0c;并與客戶就現有網絡架構&#xff08;包括防火墻與交換機&#xff09;進行了詳盡的溝通與評估后&#xff0c;我們團隊精心構思并提出了一個創新的實施方案——采用透明網橋模式。這一模式以其獨特的優勢&#xff0c;即無需對客戶現有…

SpringCloud(一)--SpringCloud簡介

一. 引言 ? 在微服務架構日益盛行的今天&#xff0c;Spring Cloud憑借其簡單易用、功能強大的特性&#xff0c;成為了眾多開發者的首選。本文僅為學習所用&#xff0c;聯系侵刪。 二. SpringCloud概述 2.1 定義 ? Spring Cloud是一系列框架的有序集合&#xff0c;它巧妙地…

SQLALchemy如何將SQL語句編譯為特定數據庫方言

最近在一個使用fastapitortoise-orm的項目中&#xff0c;需要將orm的語句編譯成特定數據庫方言&#xff0c;但是查詢了官方文檔及一些資料卻找不到合適的方法論&#x1f614;&#xff0c;于是乎我就把目光放到了sqlalchemy身上&#xff0c;東找西找給我找著了。話不多說&#x…

廬山派K230學習日記2 MicroPython基礎

MicroPython文檔&#xff1a; https://docs.micropython.org/ MicroPython是編程語言 Python3 的精簡高效實現&#xff0c;語法和 Python3 保持一致&#xff0c;但只實現了 Python 標準庫的一小部分&#xff0c;并且經過優化&#xff0c;適用于物聯網 (IoT)、消費電子和嵌入式…

《計算機組成及匯編語言原理》閱讀筆記:p177-p177

《計算機組成及匯編語言原理》學習第 13 天&#xff0c;p177-p177 總結&#xff0c;總計 1 頁。 一、技術總結 1.real mode A programming model where the program has access to the entire capability of the machine, bypassing security and memory management. Useful…

2000-2020年各省財政一般預算支出面板數據

2000-2020年各省財政一般預算支出面板數據 1、時間&#xff1a;2000-2020年 2、來源&#xff1a;國家統計局 3、指標&#xff1a;年份、省份、地方財政一般預算支出 4、范圍&#xff1a;31省 指標解釋&#xff1a;地方財政一般預算支出?是指地方ZF根據預算安排&#xff0…

python小項目:給復制出來的段落前添加星號

給復制出來的段落前添加星號 最終效果二、實現步驟2.1 編寫python腳本2.2 批處理腳本2.3 運行腳本 三、用到知識3.1 pyperclip 模塊 最終效果 說明&#xff1a;復制四段內容&#xff08;段落實際不做限制&#xff09;&#xff0c;在windows終端輸入 bulletPointAdder&#xff0…

【LeetCode Hot100 二分查找】搜索插入位置、搜索二維矩陣、搜索旋轉排序數組、尋找兩個正序數組的中位數

二分查找 搜索插入位置搜索二維矩陣在排序數組中查找元素的第一個和最后一個位置尋找旋轉排序數組中的最小值搜索旋轉排序數組尋找兩個正序數組的中位數&#xff08;hard&#xff09; 搜索插入位置 給定一個排序數組和一個目標值&#xff0c;在數組中找到目標值&#xff0c;并…

24.Java 新特性擴展(重復注解、類型注解)

一、重復注解 1、基本介紹 自從 JDK 5 引入注解以來&#xff0c;注解的使用開始流行&#xff0c;在各個框架中被廣泛使用 不過注解有一個很大的限制&#xff0c;在同一個地方不能多次使用同一個注解 JDK 8 引入了重復注解的概念 2、具體實現 &#xff08;1&#xff09;自…