分类: Linux系统编程

16 篇文章

thumbnail
信号量同步共享内存读写实例
信号量同步共享内存读写实例 前言 在前几篇文章讲述了共享内存和信号量,在共享内存的文章中两个进程不是并发运行的,而是线性运行等一个进程写完了退出了再启动另一个进程进行读操作,因为他们的操作不是原子的是不安全的。而前面又讲到了信号量可以进行进程间的同步,所以把信号量结合到共享内存中,就能在多进程进行共享内存的同步操作 目标 目前使用一个生产者和一个消…
thumbnail
一次多进程信号量同步失效的排查实录
一次多进程信号量同步失效的排查实录 本文主要是记录笔者在进行无名信号量的代码调试时遇到的两个进程没有通过同一个共享的信号量同步的日志记录 问题现象 笔者写了一个示例代码如下: #include <semaphore.h> #include <stdio.h> #include <sys/mman.h> #include <s…
thumbnail
信号量在进程的使用
信号量在进程的使用 线程和进程信号量的区别 笔者之前一直使用的都是线程信号量,所以第一次接触到用于进程间同步的进程信号量会去想它和线程信号量有什么区别。 根据结合AI的解释,线程使用的信号量仅同一进程内的线程可见,而进程信号量可跨多个独立进程共享。一般取决于sem_init()的第二参数pshared是0还是1 维度线程信号量进程信号量共享范围仅同…
thumbnail
共享内存
共享内存 共享内存的定义 共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址 共享内存的使用 Linux 中实现“进程间共享数据”的内存映射按照…
thumbnail
虚拟内存的使用
虚拟内存的使用 内存映射 内存映射指的是Linux通过将一个虚拟内存区域和一个磁盘上的对象关联起来,从而初始化这片虚拟内存区域的内容 虚拟内存可以映射到两种类型的对象中的一种: Linux文件系统中的普通文件:一个区域可以映射到一个普通磁盘文件的连续部分,例如一个可执行文件。文件区被分成页大小的片,每一片包含一个虚拟页面的初始内容。因为按需页面调度…
thumbnail
海思mpp视频编码
海思mpp视频编码 海思MPP框架 代码仓库:https://gitee.com/kidwjb/codec_video_audio/tree/master/%E6%B5%B7%E6%80%9D 海思mpp主要分为:视频输入(VI)、视频处理 (VPSS)、视频编码(VENC)、视频解码(VDEC)、视频输出(VO)、视频侦测分析 (VDA)、视频拼…
thumbnail
海思mpp音频编码
音频编码 音频编码 海思MPP AUDIO模块包括音频输入、音频输出、音频编码、音频解码四个子模块。音频输入(AI)和输出模块(AO)通过对芯片音频接口的控制实现音频输入输出功能。音频编码和解码模块提供对G711、G726、ADPCM等格式的音频编解码功能,并支持录制和播放LPCM格式的原始音频文件。 详细音频模块介绍详见《海思MPP 媒体处理软件…
thumbnail
单生产者多消费者框架
单生产者多消费者框架 学会这篇文章,让你如直哉撩发一般轻松战胜多线程调度😀 前言 场景: 编码后获得一帧视频数据,现在需要网络推流和保存本地文件,那么是创建一个生产者线程和两个消费者线程吗?一个消费者线程获取到数据用掉之后是不是还得保留给下一个消费者线程? 背景: 原本只有推流场景,那么就是基础的单生产者消费者,生产者编码生成一帧数据后放入队列并通…
thumbnail
FFMPEG&网络推流
FFMPEG&网络推流 FFMPEG 记录ffmpeg的开发学习过程,代码借鉴了许多RV1126的sdk 解复用模块(Demuxer) 解复用模块负责识别文件类型,媒体类型,分离出各媒体原始数据流,打上时钟信息后送给下级decoder filter。其核心是AVFormatContext结构体,它封装了整个媒体文件的信息,管理所有的音视频流…
thumbnail
Linuxの信号
Linuxの信号 信号允许进程和内核中断其他进程,它是一种更高层的软件形式异常。 一个发出而没有被接收的信号叫做待处理信号(pendingsignal)。在任何时刻,一种类型至多只会有一个待处理信号。 如果一个进程有一个类型为k的待处理信号,那么任何接下来发送到这个进程的类型为k的信号都不会排队等待;它们只是被简单地丢弃。 一个进程可以有选择性地阻…