WebRTC的线程模型

server/2025/1/8 3:27:21/

WebRTC中的线程类:

Thread类:
(1)Thread类中的数据:

class Thread
{// 消息队列:MessageList messages_; // 消息队列,所有需要线程处理的消息,都要先入队PriorityQueue delayed_messages_;	// 处于这个队列中的消息都是要延后处理的消息CriticalSection crit_; //临界区,配合消息队列使用,插队、出队前都要先获取临界区// 事件:SocketServer *const_ss_; //	 事件处理类,可能与名字中的socket无关// 线程:pthread_t thread_ = nullptr; // 线程
};

(2)Thread类中的重要方法:

class Thread
{// 1. 对队列的操作:Get();Peek();// 2. 用于线程切换:Post();PostTask();Send();Invoke();// 3. 线程的控制:start();run();stop();
};

关于Thread的几个要点:

  1. WebRTC中的Thread是一个对象,并不是线程,但是在对象中持有了一个线程
  2. WebRTC中的线程是有队列的
  3. WebRTC中的线程是以事件驱动的,也就是当收到事件通知之后,才去消息队列中获取数据,然后进行具体操作(事件驱动的性能要比轮询高效)

线程的创建:

  1. 不同的平台有不同的API
  2. Linux和Mac都用的是POSIX API,即pthread_create()

WebRTC中的线程管理:

ThreadManager类:
(1)ThreadManager类中的重要数据成员:

class ThreadManager
{static ThreadManager *Instance_; // 单例模式 —> 【Manager一般都可以写成一个单例模式,代码借鉴】vector<Thread*> message_queues_; // 存放所有Thread线程对象CritalSection crit_; // 临界区,对message_queues的操作之前要加锁pthread_key_t key_;	// TLS
};

http://www.ppmy.cn/server/155826.html

相关文章

【《python爬虫入门教程11--重剑无峰168》】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 【《python爬虫入门教程11--selenium的安装与使用》】 前言selenium就是一个可以实现python自动化的模块 一、Chrome的版本查找&#xff1f;-- 如果用edge也是类似的1.chrome…

大数据学习(33)-续集

今天开始重新更新大数据 -- 感谢大家的支持&#xff01;&#xff01;&#xff01;

[Linux]进程间通信-管道

目录 1. 进程间通信 2.父子进程之间的通信 3.匿名管道 匿名管道的创建 管道读写的情况 管道的5种特性 4.命名管道 指令级 命名管道原理 代码级 读取端 1. 进程间通信 当我们有两个进程操作数据库的时候&#xff0c;一个进程负责写入操作&#xff0c;一个进…

npm提示Install fail! Error_ EBUSY_ resource busy or

问题 在命令行下&#xff0c;通过NPM 命令来安装插件&#xff0c;弹出提示Install fail! Error: EBUSY: resource busy or locked, symlink 解决方法 出现这样的错误大概率是文件被占用&#xff0c;导致文件或者文件夹无法删除造成的&#xff0c; 1.尝试执行npm cache clea…

算法进阶:贪心算法

贪心算法是一种简单而直观的算法思想&#xff0c;它在每一步选择中都采取在当前状态下最优的选择&#xff0c;以期望最终得到全局最优解。贪心算法通常适用于一些具有最优子结构的问题&#xff0c;即问题的最优解可以通过一系列局部最优解的选择得到。 贪心算法的基本思路是&a…

【EI会议征稿】2025图像处理和深度学习国际学术会议(IPDL 2025)

重要信息 时间&#xff1a;2025年4月11-13日 大会地点&#xff1a;中国-成都 首轮截稿&#xff1a;2024年12月31日 接受/拒稿通知&#xff1a;投稿后约3~8天 收录检索&#xff1a;EI Compendex&#xff0c;Scopus 点击查看会议主页&#xff1a;2025图像处理和深度学习国际…

又一年。。。。。。

2024&#xff0c;浑浑噩噩的一年。 除了100以内的加减法&#xff08;数据&#xff0c;数据&#xff0c;还是数据。。。。。。&#xff09;&#xff0c;似乎没做些什么。 脸盲症越来越重的&#xff0c;怕是哪天连自己都不认得自己的了。 看到什么&#xff0c;听到什…

docker 安装influxdb

docker pull influxdb mkdir -p /root/influxdb/data docker run -d --name influxdb -p 8086:8086 -v /root/influxdb/data:/var/lib/influxdb influxdb:latest#浏览器登录&#xff1a;http://192.168.31.135:8086&#xff0c;首次登录设置用户名密码&#xff1a;admin/admin1…