什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程 …
createmutex
49 | 程序性能分析基础(下)在上一篇文章中,我们围绕着“怎样让程序对 CPU 概要信息进行采样”这一问题进行了探讨,今天,我们再来一起看看它的拓展问题。知识扩展问题 1:怎样设定内存概要信息的采样频率?针对内存概要信息的采样会按照一定比例收集 Go 程序在运行期间的堆内存使用情况。设定内存概要信息采样频率的方法很简单,只要为runtime.MemProf …
##互斥量mutex前文提到,系统中如果存在资源共享,线程间存在竞争,并且没有合理的同步机制的话,会出现数据混乱的现象。为了实现同步机制,Linux中提供了多种方式,其中一种方式为互斥锁mutex(也称之为互斥量)。互斥量的具体实现方式为:每个线程在对共享资源操作前都尝试先加锁,成功加锁后才可以对共享资源进行读写操作,操作结束后解锁。互斥量不是为了消除竞争, …
线程池解决了什么问题?首先我们需要了解为什么要设计线程池,其到底解决了什么问题。线程创建和销毁的开销是很大的,需要为其分配内存,将其加入调度队列由操作系统进行调度。而线程池的目的就是减少线程的频繁创建和销毁,维持一定合理数量的线程,“需要时取,用完时还”。(连接池的目的也类似,其维持一定数量连接的缓存池,尽量重用已有的连接,减少创建和关闭连接的频率;)线程池 …
自定义播放器系列第一章 视频渲染第二章 音频(push)播放第三章 音频(pull)播放(本章)第四章 实现时钟同步第五章 实现通用时钟同步第六章 实现播放器前言我们上一章讲了,ffmpeg解码sdl push的方式播放音频,调用流程简单,但是实现起来还是有点难度的。接下来讲的就是使用pull的方式播放音频,pull的方式即是使用回调的方式播放音频,在打开S …
前言 对线程有基本的理解简单的C++面向过程编程能力创造单个简单的线程。创造单个带参数的线程。如何等待线程结束。创造多个线程,并使用互斥量来防止资源抢占。会使用之后,直接跳到“汇总”,复制模板来用就行相关博客:实现一个简单的线程池线程教程今天就分享到这咯有一起学习的可以关注一下,一起学习有哪里不对的大家也可以评论,相关视频资料可以后台私信‘资料’领取资料内容 …
在上一篇文章中介绍了如果将ffmpeg解码出的视频帧进行渲染显示本文在上篇文章的基础上,讨论如何将ffmpeg解码出的音频帧进行播放在开始音频播放问题正式讨论前,我们先引入一个经典的生产者-消费者线程同步模型,用于描述与音视频帧队列,或音视频编码数据包队列相关线程的同步过程1、生产者-消费者线程模型本文主要讨论posix标准下的生产者-消费者线程模型,pos …
https:www.freertos.orgStatic_Vs_Dynamic_Memory_Allocation.html介绍V9.0.0之前的FreeRTOS版本从特殊的FreeRTOS堆中分配下面列出的RTOS对象使用的内存。 FreeRTOS V9.0.0及更高版本使应用程序编写者可以自己提供内存,从而可以选择创建以下对象,而无需动态分配任何内存:T …
事件标志组嵌入式事件标志组是一种在嵌入式系统中广泛使用的同步机制,主要用于实现多任务间的同步与通信。事件标志组是一组事件标志位的集合,每个位代表一个事件是否发生。它允许任务等待特定的事件发生,当事件发生时,相关任务将被唤醒并执行相应的操作。特点灵活性:用户可以根据需要自定义每个位事件的含义,如bit0表示按键是否按下。支持一对多、多对多的同步模式,即一个任务 …
嵌入式RTOS就业级项目入门与实战(基于FreeRTOS)|果fx获课》789it.top14667嵌入式开发进阶:使用FreeRTOS实现高效的任务管理在嵌入式系统开发中,实时操作系统(RTOS)的引入可以极大地提高系统的并发处理能力和资源利用效率。FreeRTOS作为一个轻量级、开源的RTOS,广泛应用于各种嵌入式系统中。本文将深入探讨如何使用FreeR …
- 1