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
虚拟内存的运作
虚拟内存的运作 什么是虚拟内存 在一个系统中的进程是与其他进程共享CPU和主存资源的,如果太多的进程占用太多的内存,那么部分进程就无法运行,且内存容易遭到破坏。为了更加有效地管理内存并减少出错,现代操作系统提出了虚拟内存的概念 虚拟内存:虚拟内存是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完美交互。它为每个进程提供了一个大的,一致的且私用的…
thumbnail
FFMPEG音视频流合并源码分析
音视频流合并 音视频流合并 笔者目前有两个流分别是音频流和视频流,现在需要合并成复合流用于保存文件和网络推流 笔者的ffmpeg接口移植的RV1126,可前去借鉴RV1126的SDK 具体线程如下: 生产者线程 消费者线程 ────────────────────────────────────────────────────────── get_…
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
C++封装性
C++封装性 本篇文章是笔者在编写C++代码时遇到对于C++封装性问题的思考,由于笔者一直对C比较熟悉,C++是半吊子入门,没有系统学习,所以如有提出简单的问题望大家见谅长期更新 全局变量定义在哪 在编写代码时遇到需要在源文件定义一个全局变量,如果是C语言我可能会直接定义成一个全局变量,但是在C++中我是应该定义在类成员中还是就定义成源文件中的全局…
thumbnail
源文件头文件那些事
源文件头文件那些事 不知道是否很多人也和我有一样的疑惑,哪怕写了这么久的C\C++代码,但是仍然会对某个需要引用的头文件到底应该放到头文件还是源文件停顿,如果是源文件需要用到的函数放到哪里;如果是头文件类声明某个成员需要外部定义类型又放到哪里;所用到的某个定义又要放到哪里 那么就跟随我一起解开这些影响不大但是又事关代码规范的小秘密吧 外部头文件引用…