5.4 webrtc的线程

这篇具有很好参考价值的文章主要介绍了5.4 webrtc的线程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

那今天呢?我们来了解一下webrtc中的threed,首先我们看一下threed的类,它里边儿都含了哪些内容?由于threed的类非常大啊,我们将它分成两部分。

那第一部分呢,是我们看threed的类中都包含了哪些数据之后呢?我们再来看看threed的类中包含了哪些方法?那首先我们来看一下数据,之前呢,我在常见的线程模型中,曾经向你介绍过,一般呢,我们在使用线程的时候呢,都要增加一些队列,对吧?

对于web rtc的thread也不例外。那在这个类中呢,首先包含了一个message list,这个对象那通过这个对象呢,我们就知道threed的它是包含队列的。也就是说,所有需要线程处理的消息呢,都要先入队。

之后呢,再由这个线程一个一个的进行处理,这样可以保证它的每一个message都可以得到响应,并且呢,是有序的响应。对于y8 tc的threed的类来说呢,除了message之外,它还有一个delay的message处于这里边儿的所有消息呢,都是延后处理的消息。

那这个我们简单了解一下就OK了,所以从这里我们也可以知道啊,对于外边汽车来说,它除了有一个消息队列之外呢,还包括了一个延迟处理消息的队列,从这一点上我们就可以看出所有的类,它的功能是非常强大的。好,

那再接下来的一个成员呢?是security section,那这就是临界区了,对吧?它的作用呢,是用于防止访问队列时候发生冲突,也就是说,无论是message还是delete message。

都要根据临界区进行插队入队,当我们要往这个队列中塞数据的时候呢,首先获取临界区。获取到临界区之后呢,再插入数据。那取数据呢,也是同样道理。也要先获取临界区之后呢,才能从消息队列中取出消息,那这是非常简单的道理,这是第一部分数据。

第二部分数据呢,是对于外部rtc的threed的类来说,它是可以进行时间处理的,所以它包含了一个socket server。socket server可能会给大家带来一些困扰,同学可能会觉得,哎,那为什么一个客户端的程序会有一个socket server呢?其实这里的socket server,它的功能呢,就是用于事件处理,那之所以取这个名字,

是因为一般情况下,我们是在服务端使用事件处理。所以在wrtc的开发者呢,可能是沿用了这个习惯,所以给它起了一个叫socket server,实际你就知道它是一个事件处理类就OK了。

好,那最后一部分数据呢?就是线程那我们的threed的类中包含了,我们真正处理数据的线程。在WINDOWS下呢,是handle那在linux下呢,它这个类型是thread ctrl t好,这是数据部分,那接下来呢,
5.4 webrtc的线程,webrtc,webrtc

我们再看看。threed的类中的重要方法,它里边包括的方法非常多。那我讲重要的分成了三部分,
5.4 webrtc的线程,webrtc,webrtc

那第一大部分呢?我们先看后边儿就是对线程的控制启动、运行、以及线程的停止。这三个函数呢,是我们每一个线程都需要有的,对吧?好,那上面的这些方法呢,又可以分成两部分,其中get与pick。是用于对队列的操作,从队列中取数据,

而post post ta sks ks and invoke,那这些呢?是用于线程切换的,我们也知道,为了提高效率,它采用了多线程,不同的线程呢,完成不同的工作。线程之间呢,就要做各种的切换。从a线程切到b线程b线程切到c线程,这都是经常发生的事儿,如何才能进行高效的切换呢?实际上,对于y8 tc的类来说,

它提供了很多方法,那这里我简单的列出了几个。post post task send invoke对吧?那对于这些API的具体的作用,我会在后边的课程中呢给你做详细介绍。那现在我们只要知道,对于web rtc的threed的来说,它的方法呢,也包括了三大类。

第一大类呢,是对队列的获取。第二大类呢,是线程的切换。第三大类呢,是线程的控制。

那以上呢,就是threed的类的一些重要数据和方法,接下来呢,我们看关于threed的几个要点。第一个要点呢,我们要知道web rtc中的它thread是一个对象,并不是一个真正运行的线程。但是在threed的对象中呢,是持有了现成的句柄。这个我们要知道,比如我们在代码中看到某某某threed的,你就认为它是一个线程了,并不是对吧。

它只是一个对象。那具体这个线程是什么时候启动的?它是怎么运行的?我们还要根据里边儿的内容去详细的看才能知道。这是我们第一个要知道的,

那第二个是web rtc中的线程,它是有队列的,刚才我们已经介绍到了,对吧?

第三个呢是web rtc中的线程,是以事件驱动的。也就是说,外拔tc的线程呢?当收到事件通知之后,才去队列中获取消息。那么,拿到消息之后呢?再进行具体的操作。

它是这样一个逻辑,这种线程的驱动方式肯定要比我们轮巡的方式要好的多,对吧?如果我们采用轮巡的方式,不停的去队列中。轮询是否有数据,那它这种性能呢?肯定是低效的,而事件的方式呢?是非常高效的。这是关于threed的几个要点,那了解了threed的几个要点之后呢?下面我们来看看线程的创建。那首先我们要知道,

对于不同的平台,它创建线程的方法肯定是不一样的,每个平台有每个平台。不同的API那像linux和mac,它使用的都是p方法,也就是p threed的create。通过这个API来创建线程,而对于WINDOWS来说呢,它使用的是create threed的这个方法来创建线程。这一点呢,其实大家应该都非常了解了,对吧?

好,那接下来呢,我们就来看一下代码,了解一下y八二tc的threed的类,它长什么样子?我们切换到WINDOWS平台。那首先啊,我们还是打开peer connection client这个项目,那在这个项目中呢,
5.4 webrtc的线程,webrtc,webrtc

我们找到内文件。在闷文件中的温闷方法中呢?我们看第80行,那这个呢?就是一个。threed的对象对吧?它是一个win 32 threed的,也就是说对于外8 tc来说,不同的平台,

它都对threed的做了一层封装,他们这些子类呢,都继承自。threed的类,我们可以跳进去看一下啊,这个时候呢,它就查找到两个地方,一个是点h,一个是点CC,对吧?我们先到点h。OK,从这里我们可以看到啊,135行win三二threed的就继承自threed的,那我们继续进入到threed的的定义。
5.4 webrtc的线程,webrtc,webrtc

就是在这里,那在threed的点h中的168行就是threed的类的定义,我们可以简单过一下,看看这个类它是怎么定义的?那首先呢,它是继承自t ask que base这个类对吧?那在这个类中呢?实际只定义了一些方法,这里呢?我先不看了。后边我们需要的时候,我们再看这个类,它是怎么定义的?好,我们可以简单过一下,

5.4 webrtc的线程,webrtc,webrtc
那在一开始的时候呢,定义了几个构造函数,那我们可以根据情况呢,在创建的对象的时候给它传入不同的参数。有socket server指针型的,还有这种智能指针型的,还有呢指针型加一个。doin it这个参数了。智能指针型加do I it这个参数对吧?那它支持的构造函数类型呢?还是比较多的好,再往下。那再接下来的这两个方法呢,实际是创建s对象,它提供了两个静态的方法,
5.4 webrtc的线程,webrtc,webrtc

一个是create with socket server。一个呢是create,那这两种方法呢?都可以创建出threed的对象,后边儿呢?我们这两种方法都会用到,到时候呢,我们再看看它们的细节。再接着往下走,接下来呢,是threed的类中的子类,这些子类呢,我们暂时先不管,就直接跳过去是吧?之后呢,
5.4 webrtc的线程,webrtc,webrtc

是threed的类控制线程的一些方法,包括quit is quitting。restart都是定义在这里,在后边呢,是与队列相关的,从队列中获取消息,一个get一个pick。那这两种方法的区别,后边儿我们也会做详细介绍好,再往下就是post post delayed对吧?等等,一系列的与线程切换相关的,那这些呢,我们就不详细看了,我们继续往下走。

这里还有start。stop都是用于控制线程的启动与停止的。runs end,刚才我们已经介绍了,那后边呢?我们还会对这个方法呢?做详细介绍。还有invoke invoke呢,包括多种重载。可以存放不同的参数。实际上,关于threed的类中的很多细节呢,我们都可以看一些注释,在这个threed的类中呢,包含了大量的注释。

这些注释呢,其实对于我们阅读代码都是有非常重要意义的,所以大家可以仔细看一下这块儿的注释。好再往下呢,是post task对吧?post delay task可能这些方法呢?都是在这儿定义的好,我们继续往下啊。这些方法我们就不介绍了,那在类中呢?定义了很多的子类,那这些子类呢?也有它的用处。我们现在用不到,先给它过滤掉这个类还是非常庞大的,

对吧?大概有五六百行代码了,那再接下来呢,就是threed的类中的一些数据成员了。那我们刚才看到的message delay的message。都是在这里定义的,包括了临界区。还有用于事件处理的socket server。以及与线程关联的thread,对于线程来说呢,不同的平台是有不同的类型的。像posix,它使用的是p threed的杠t,那window呢?是使用的handle对吧?
5.4 webrtc的线程,webrtc,webrtc

那当然threed的还跟threed的manager?是有关联的,那threed manager呢?是对threed的线程的管理,那后边儿呢?我也会对threed的manager做详细的介绍。通过查看这个类啊,我们可以知道threed的类是非常庞杂的,对吧?里边包括了很多信息,但你总结起来啊,实际就几大类。

那一大类呢,是与队列相关的一大类呢,是与事件相关的,

那再有呢,就是与线程相关的,这些数据对吧?除了这些之外呢,对于它提供的方法实际也是类似的,

首先是控制线程的,从队列中获取消息的。

线程的切换以及事件的处理对吧?就是这样几大类,

如果我们光看这个代码没有对它进行分类的话,我们会觉得threed的类。太庞杂了,看着都头疼,对吧?但如果你把它按分类进行划分之后,

你就觉得这个类其实也没有那么复杂。归结起来,就是对队列的处理,对事件的处理,对线程的处理,无非就是这几项,对吧?那以上呢,就是我们对web rtc threed的类的一些简要的介绍。那么,了解了这些知识之后呢?

我们后边再逐步的深入,让你详细的知道web rtc是如何进行。线程控制的线程管理的,当我们最后讲完这一章的内容之后呢,

你就知道y八二tc它的线程到底是如何工作的了。好,那我们今天的课程呢?就到这里有任何的问题呢,您可以到讨论区或者是群里去给我留言,我在那里呢,给你做相应解答好,谢谢。文章来源地址https://www.toymoban.com/news/detail-671277.html

到了这里,关于5.4 webrtc的线程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 5.7.webrtc线程的启动与运行

    那在上一节课中呢?我向你介绍了web rtc的三大线程,包括了信令线程,工作线程以及网络线程。那同时呢,我们知道了web rtc 3大线程创建的位置以及运行的时机。 对吧,那么今天呢?我们再继续深入了解一下,看这些线程是如何创建的,以及如何运行的。 那首先呢,我们来

    2024年02月12日
    浏览(27)
  • 多媒体库SDL以及实时音视频库WebRTC中的多线程问题实战详解

    目录 1、概述 2、开源跨平台多媒体库SDL介绍 3、开源音视频实时通信库WebRTC介绍

    2024年02月08日
    浏览(57)
  • 5.4 满秩分解

      任意矩阵都有满秩分解 Full rank factorization 。也就是说不限于方阵,更不限于满秩矩阵。满秩分解用途很广,尤其是后期的对于广义逆的学习来说非常重要。   首先要搞清楚什么是满秩分解 full rank factorization ,假设矩阵为 A A A ,它的秩为 r r r ,满秩分解就是分解为如下

    2024年02月05日
    浏览(42)
  • 5.4 龙贝格算法

      龙贝格算法是一种数值积分方法,用于计算定积分的数值近似值。它是基于复合梯形法和复合辛普森法的推广和拓展,可以达到更高的精度。相较于复合梯形法和复合辛普森法,龙贝格算法的收敛速度更快,且误差更小,因此在计算积分时更加精确。此外,龙贝格算法具有

    2024年02月11日
    浏览(16)
  • CentOS 7 升级 5.4 内核

    MatrixOne 推荐部署使用的操作系统为 Debian 11+、Ubuntu 20.04+、CentOS 9+ 等 Kernel 内核版本高于 5.0 的操作系统。随着 CentOS 7 的支持周期接近尾声,社区不少小伙伴都在讨论用以替换的 Linux 操作系统,经过问卷调查,我们发现小伙伴们的操作系统大都仍为 CentOS 7,并且由于种种原因

    2024年04月10日
    浏览(34)
  • 块设备调用逻辑(linux 5.4)

    2024年02月10日
    浏览(32)
  • 5.4 单管放大电路的频率响应

    考虑到耦合电容和结电容的影响,图5.4.1(a)所示电路的等效电路如图(b)所示。 在分析放大电路的频率响应时,为了方便起见,一般将输入信号的频率范围分为中频、低频和高频三个频段。在中频段,极间电容因容抗很大而视为开路,耦合电容(或旁路电容)因容抗很小而视为

    2024年02月10日
    浏览(42)
  • 5.4 完整性约束命名子句

      定义 : 完整性约束是在 CREATE TABLE 语句中定义的。 SQL为 CREATE TABLE 语句提供了 CONSTRAINT 子句,用于对完整性约束进行命名。 命名的目的是方便增加或删除约束。 基本结构 : 其中,完整性约束条件可以是NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK等。 示例 : 学生登记表 Student

    2024年02月06日
    浏览(44)
  • 【爬虫】5.4 Selenium 实现用户登录

    目录 任务目标 创建模拟网站 创建服务器程序  键盘输入动作 鼠标点击动作 编写爬虫程序 Selenium 查找的 HTML 元素是一个 WebElemen t对象, 这个对象不但可以获取元素的属性值,而且还能执行一 些 键盘输入send_keys() 与 鼠标点击click() 的动作 我们设计一个实现 用户登录并爬取

    2024年02月13日
    浏览(34)
  • 5.4、docker-compose

    h ttps://www.runoob.com/docker/docker-compose.html  Docker Compose docker-compose.yml 配置文件编写详解_docker-compose.yml 编写_种子选手的博客-CSDN博客 docker-compose.yml 配置文件编写详解 1.dockerfile: 构建镜像; 2.docker run: 启动容器; 3.docker-compose: 启动服务( 一次性启动多个容器 ); Compose用于定

    2024年02月11日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包