5.1 webrtc线程模型

那从今天开始呢?我们来了解一下y8 tc线程相关的内容,那在开始之前呢?我们先来看一下,我们本章都要讲解哪些知识?
那第一个呢?是线程的基础知识,这块内容呢?主要是为大家做一下回顾,对吧?按理说呢?能够学习web边7c源码的同学应该对线程的基础知识都十分熟悉了,但也有一些同学可能。可能确实用线程不多,所以在这里增加了这块知识(理论是什么)

第二个我们来了解一下一般情况下我们的项目中是如何使用线程的。它都有哪一些常见的线程模型对吧?那有了这个基础之后呢?后面我们再看外rtc的线程模型的时候,你就会更容易理解它了。(怎么用)

那第三个呢?是我们通过源码来了解一下外包rtc的线程是什么时候创建的,那这对于我们理解外包rtc源码来说呢,是十分关键的。对吧,只有我们了解线程创建的时机,我们才能知道外边rtc线程之间它是怎样的一个关系,是一对多的关系,还是一对一的关系?所以对于这块儿内容呢,我们要做一下详细分析。(实际是什么样创建的)

那接下来我们来看一下外边儿tc的线程模型是什么?那只有将web rtc线程模型我们搞清楚了,我们才能知道它的一个工作机制是什么样的。每个线程做了哪些事儿?线程与线程之间是如何切换的?那这些呢?都是在我们y8 rtc线程模型这一节中做详细介绍。(实际是怎么使用的)

第五个在了解了线程模型之后呢,我们再来看看web rtc线程之间是如何进行切换的。当存在多个线程的时候,哪两个线程之间是可以有联系的,而其他线程之间呢,是相互独立的,这都是我们比较关心的问题。另外,在我们进行线程切换的时候,外边tc提供了多种方式,为什么要提供多种方式?每种方式它有什么好处?之间又有什么区别?那这些呢,我们都会在这一节向你做详细介绍。(实际是怎么切换的)

好,第六个那如果我们用单步调试的时候,你就会发现啊,我们从接口层调入到它的实现层,其实是进不去的。其中的原因呢,就在于外拔7c在外层用了一层红,定义了一些接口,对吧?当我们进入到这些红的时候。调湿器就无法再跟进去了,那如果我们无法利用调湿器,这个利器的话,我们在分析外边tc源码的时候就会十分困难。所以呢,我们必须要弄清楚在接口层到外边tcc的实现层之间,它是如何通过宏调进去的,对吧?那了解这个过程之后呢?我们就可以跳过这段宏。然后再让调试器继续执行,这样我们就可以更好的分析我们的源码了,(实际是怎么进行内外交互的)

那最后一个呢,我们再来了解一下外部rtc的信号处理。那在外边tc中呢?大量使用了信号,也就是说通过一个信号绑定了一个函数,当我们调用这个函数的时候呢,只要发送一个信号。就可以将对应的函数调起来。对,那外边为什么要使用信号?信号的好处是什么?它的一个工作机制又是怎样的?那我们会在信号处理这一节,向你做详细介绍OK?(信号的好处,类似于中断)

那以上呢,就是我们这一章所要讲解的主要的内容,除此之外呢,我们还要知道我们理解y八二七c的关键。就在于你对外边线程的理解,因为我们在做项目的时候,大家都有这个经验,如果是一个单线程的项目,无论它内部逻辑多复杂。你只要通过调试器,通过我们一些经验,一些调试手段,

我们都可以将它里边的逻辑给搞清楚,它是从哪进来的?怎么出去的?中间做了什么事?对吧?都非常好剖析,但如果我们遇到一个多线程的项目,这个过程就会非常复杂,你要清楚。它的线程模型是怎么样的?每个线程相互之间都是独立的,还是线程与线程之间有前后的逻辑关系?如果这个我们不搞清楚的话啊,你是很难理解它里边是怎么转的,对于y八七c更是如此。

这是第一点, y八七c中呢,包含了大量的线程。这些线程呢,有相互合作的,也有独立运行的,对吧?所以我们就要将这些线程呢,都给搞清楚之后。才能更好的理解它内部的一个运转机制,所以通过上面的介绍呢,我们应该知道理解y8 rtc的关键点就是你对它里边的线程的理解。把里边儿线程之间的关系搞清楚之后呢,我们再去看外边儿tc代码的时候呢,就更容易理解一些,对吧?(把线程和线程之间的相互关系都搞好)

那么第二点呢?就是我们要清楚yw tc中都有哪些关键的线程,尤其是网络线程,工作线程,信号线程。这三大线程是y8 rtc最为关键的三个线程,通过这三个线程呢,它又生成了很多的子线程。那子线程与子线程之间是怎样的三大线程之间是怎样的?这些呢都是我们应该重点掌握的知识。那除此之外呢,我们还要了解web rtc线程与线程之间是如何协调工作的,哪个线程是先执行,哪个线程是后执行,(三大线程和子线程的关系)

那执行完成之后又会。进入到哪个线程?那这些呢?我们都应该搞清楚,这样呢,才更有利于我们对外边代码的理解。那以上呢,就是我们这一节所介绍内容,那这一节中呢,我主要告诉你,我们这一章都要讲解哪些知识,那我们要抓住哪些重点?那些知识掌握之后呢?我们就抓住了外边儿tc的脉搏,这样就可以一步一步的对外边儿tc进行更深入的剖析。

好,那我们今天的课呢?就到这里,谢谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/46885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

课程项目设计--spring security--用户管理功能--宿舍管理系统--springboot后端

写在前面: 还要实习,每次时间好少呀,进度会比较慢一点 本文主要实现是用户管理相关功能。 前文项目建立 文章目录 验证码功能验证码配置验证码生成工具类添加依赖功能测试编写controller接口启动项目 security配置拦截器配置验证码拦截器 …

电脑上安装,多版本node

手上有一个vue3的项目,sass配置如下图所示: 安装了Python3.10和node 16.14.0,项目能正常install 跟run。 因工作需要,收上有一个vue2的项目,sass配置如下图所示: 执行npm intsall 的时候一直报Python2找不…

2022年12月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:数组逆序重放 将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8。 输入 输入为两行:第一行数组中元素的个数n(1<n<100),第二行是n个整数,每两个整数之间用空格分隔。 输出 输出为一行:输出逆序后数组的整数,每两个整数之间…

深入浅出Pytorch函数——torch.nn.init.orthogonal_

分类目录&#xff1a;《深入浅出Pytorch函数》总目录 相关文章&#xff1a; 深入浅出Pytorch函数——torch.nn.init.calculate_gain 深入浅出Pytorch函数——torch.nn.init.uniform_ 深入浅出Pytorch函数——torch.nn.init.normal_ 深入浅出Pytorch函数——torch.nn.init.c…

Java云原生框架Quarkus初探

Java云原生框架Quarkus初探 Quarkus 介绍 Quarkus 是一个云原生&#xff0c;容器优先的Java应用框架&#xff0c;它号称是超音速和亚原子的框架&#xff0c;主要特点是构建速度、启动速度快和占用资源少等特点。它为OpenJDK HotSpot和GraalVM量身定制&#xff0c; 根据Java库和…

常用消息中间件介绍

RocketMQ 阿里开源&#xff0c;阿里参照kafka设计的&#xff0c;Java实现 能够保证严格的消息顺序 提供针对消息的过滤功能 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 RabbitMQ Erlang实现&#xff0c;非常重量级&#xff0c;更适…

Nevron 3DChart Crack,可视化界面在运行时可用

Nevron 3DChart Crack,可视化界面在运行时可用 3DChart使用OpenGL 3D图形引擎创建复杂的2D和3D图表&#xff0c;这些图表可以包含静态或动画图像。3DChart包括一个用于生成图表模板的独立应用程序和一个ASP服务器配置实用程序。该组件还包括一个专门设计用于与3DChart集成的工具…

java版本企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发

java版本企业电子招标采购系统源码Spring Cloud Spring Boot 二次开发 一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标立项申请入口、用户可以保存为草…

设计模式十九:备忘录模式(Memento Pattern)

备忘录模式是一种行为型设计模式&#xff0c;它允许对象在不暴露其内部状态的情况下捕获和恢复其状态。该模式的主要目标是在不破坏封装性的前提下&#xff0c;实现对象状态的备份和恢复。备忘录模式常用于需要保存对象历史状态、撤销操作或者实现快照功能的情况。 备忘录模式…

Scratch 游戏 之 随机大地图生成教程

在很多生存 / 沙盒类游戏中&#xff0c;地图往往是随机生成的&#xff0c;例如&#xff1a;饥荒、我的世界等。那我们该如何在scratch中实现这一点呢&#xff1f; 在scratch中有两种办法可以实现——画笔和克隆体。我们这次先聊克隆体。 我们可以先将克隆体设置为方形的&#x…

CentOS7安装部署Java11

文章目录 CentOS7安装部署JDK11一、前言二、正文1.卸载 Open JDK2.安装JDK11 CentOS7安装部署JDK11 一、前言 Linux 发行版&#xff1a;CentOS-7-x86_64-DVD-1804.isoJDK 版本&#xff1a;Java SE Development Kit 11.0.19 Java Archive&#xff1a;https://www.oracle.com/j…

打怪升级之从零开始的网络协议

序言 三个多月过去了&#xff0c;我又来写博客了&#xff0c;这一次从零开始学习网络协议。 总的来说&#xff0c;计算机网络很像现实生活中的快递网络&#xff0c;其最核心的目标&#xff0c;就是把一个包裹&#xff08;信息&#xff09;从A点发送到B点去。下面是一些共同的…

Vue开启代理服务器

~~~~~ 在Vue.js中&#xff0c;可以通过配置代理服务器来解决跨域请求的问题。代理服务器可以将请求转发到目标服务器&#xff0c;并将响应返回给Vue应用。 在Vue项目中配置代理服务器可以通过以下方法实现&#xff1a; 配置vue.config.js module.exports {lintOnSave:false…

Linux学习之ssh和scp

ls /etc/ssh可以看到这个目录下有一些文件&#xff0c;而/etc/ssh/ssh_config是客户端配置文件&#xff0c;/etc/ssh/sshd_config是服务端配置文件。 cat -n /etc/ssh/sshd_config | grep "Port "可以看一下sshd监听端口的配置信息&#xff0c;发现这个配置端口是22…

Android自定义View知识体系

View的概念、作用和基本属性 View是Android中的基本UI组件&#xff0c;用于构建用户界面。它可以是按钮、文本框、图像等可见元素&#xff0c;也可以是容器&#xff0c;用于组织其他View。View的作用是展示数据和接收用户的输入。它可以显示文本、图片、动画等内容&#xff0c…

ubuntu20.04升级GLIBC高版本方法,解决:version `GLIBC_2.34‘ not found

检查版本 strings /lib/x86_64-linux-gnu/libc.so.6 |grep GLIBC_ 1 显示结果 GLIBC_2.2.5 GLIBC_2.2.6 GLIBC_2.3 GLIBC_2.3.2 GLIBC_2.3.3 GLIBC_2.3.4 GLIBC_2.4 GLIBC_2.5 GLIBC_2.6 GLIBC_2.7 GLIBC_2.8 GLIBC_2.9 GLIBC_2.10 GLIBC_2.11 GLIBC_2.12 GLIBC_2.13 GLIBC_2…

Neo4j之CALL基础

CALL 语句用于调用 Neo4j 数据库中预定义的函数、过程或者自定义的函数。它是用来执行一些特定操作或计算的重要工具。以下是一些常用的 CALL 语句示例和解释&#xff1a; 调用内置函数&#xff1a; CALL db.labels()这个示例中&#xff0c;调用了内置函数 db.labels() 来获取…

git分支

一、引言 分支的命名规范以及管理方式对项目的版本发布至关重要&#xff0c;为了解决实际开发过程中版本发布时代码管理混乱、冲突等比较头疼的问题&#xff0c;我们将在文中阐述如何更好的管理代码分支。 二、总览&#xfeff; 从上图可以看到主要包含下面几个分支&#xff…

【是C++,不是C艹】 手把手带你实现Date类(附源码)

&#x1f49e;&#x1f49e;欢迎来到 Claffic 的博客&#x1f49e;&#x1f49e; &#x1f449; 专栏&#xff1a;《是C&#xff0c;不是C艹》&#x1f448; 前言&#xff1a; 恍惚间&#xff0c;已经两个月没更新了 &#xff08;&#xff1b;д&#xff40;&#xff09;ゞ 我忏…

css实现三角形的几种方法

css实现三角形的方法&#xff1a;1、使用边框实现三角形&#xff0c;利用透明边框和实色边框的组合&#xff0c;可以创建不同方向和大小的三角形&#xff1b;2、使用伪元素实现三角形&#xff0c;通过使用伪元素来创建一个占据父元素一半大小的实心三角形&#xff1b;3、使用tr…