当前位置: 首页 > news >正文

WebRTC的三大线程

WebRTC中的三个主要线程:

  1. signaling_thread,信号线程:用于与应用层交互
  2. worker_thread,工作线程(最核心):负责内部逻辑处理
  3. network_thread,网络线程:负责网络数据包的收发

webrtc中的其他线程都是通过这三个线程创建出来的!!

webrtc中创建三个线程的位置:

// src/examples/peerconnection/client/conductor.cc
bool Conductor::InitializePeerConnection() {peer_connection_factory_ = webrtc::CreatePeerConnectionFactory();
}// src/pc/peer_connection_factory.cc
PeerConnectionFactory::PeerConnectionFactory(PeerConnectionFactoryDependencies dependencies)
{if (!network_thread_) {owned_network_thread_ = rtc::Thread::CreateWithSocketServer(); // CreateWithSocketServer() 用于处理网络事件owned_network_thread_->SetName("pc_network_thread", nullptr);owned_network_thread_->Start();network_thread_ = owned_network_thread_.get();}if (!worker_thread_) {owned_worker_thread_ = rtc::Thread::Create(); // Create() 不处理网络事件owned_worker_thread_->SetName("pc_worker_thread", nullptr);owned_worker_thread_->Start();worker_thread_ = owned_worker_thread_.get();}if (!signaling_thread_) {signaling_thread_ = rtc::Thread::Current(); // Current() 默认将主线程当做signal线程if (!signaling_thread_) {signaling_thread_ = rtc::ThreadManager::Instance()->WrapCurrentThread();wraps_current_thread_ = true;}}
}

PS:编码技巧:当传入的参数较多时,可以打包成一个结构体传下去,如dependencies,其中指定
dependencies.network_thread, dependencies.signaling_thread, dependencies.worker_thread 等,
以及火山引擎SDK中的video_frame等,都是如此

http://www.lryc.cn/news/513623.html

相关文章:

  • Spring SpEL表达式由浅入深
  • 数据设计规范
  • 基于SpringBoot的宠物寄养系统的设计与实现(源码+SQL+LW+部署讲解)
  • 深度学习中的HTTP:从请求到响应的计算机网络交互
  • Agent系列:AppAgent v2-屏幕智能Agent(详解版)
  • 艾体宝方案丨全面提升API安全:AccuKnox 接口漏洞预防与修复
  • 开源的Vue低代码表单设计器 form-create-designer v3.2.9 版本发布,新增10多种功能
  • Android Killer 无法调用jd-gui.exe
  • 24.01.01 MyBatis
  • 游戏引擎学习第70天
  • 深入理解 Spring Cloud 中的 Eureka、Ribbon 和 Feign
  • DVWA靶场Brute Force (暴力破解) 漏洞low(低),medium(中等),high(高),impossible(不可能的)所有级别通关教程
  • 山高路陡,无人机代替滑轨吊运物资极大提高做作业效率降低成本
  • 数据的高级处理——pandas模块进阶——数据的统计运算
  • 【Leetcode】3280. 将日期转换为二进制表示
  • Vue3 中自定义hook
  • 嵌入式系统 第七讲 ARM-Linux内核
  • 音视频入门基础:MPEG2-PS专题(2)——使用FFmpeg命令生成ps文件
  • Embedding
  • Android Studio学习笔记
  • Git的使用流程(详细教程)
  • Keil中的gcc
  • bilibili 哔哩哔哩小游戏SDK接入
  • springboot523基于Spring Boot的大学校园生活信息平台的设计与实现(论文+源码)_kaic
  • 【YOLO算法改进】ALSS-YOLO:无人机热红外图像|野生动物小目标检测
  • XML解析
  • PlasmidFinder:质粒复制子的鉴定和分型
  • PTA数据结构作业一
  • 2024年总结【第五年了】
  • java实现一个kmp算法