【C++】开源:Boost进程间通信库InterProcess配置使用

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍Boost进程间通信库InterProcess配置使用。
无专精则不能成,无涉猎则不能通。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:1. Boost.InterProcess介绍
    • :blush:2. 环境配置
    • :satisfied:3. 使用说明
      • 共享内存读写示例

😏1. Boost.InterProcess介绍

项目Github地址:https://github.com/boostorg/interprocess

官网:https://www.boost.org/doc/libs/1_83_0/doc/html/interprocess.html

Boost.InterProcess是Boost库中的一个模块,提供了用于在C++中进行进程间通信和共享内存操作的功能。它提供了一组类和函数,使得在不同的进程之间能够安全地共享数据和同步访问。

Boost.InterProcess提供了以下主要功能:

1.共享内存段(Shared Memory Segments):Boost.Interprocess允许创建具有命名或匿名标识符的共享内存段。共享内存段可以在不同的进程之间共享数据,而不需要进行显式的数据拷贝。通过共享内存段,进程可以直接访问和修改共享的数据。

2.互斥锁和条件变量(Mutexes and Condition Variables):为了避免多个进程同时访问共享内存时的数据竞争和冲突,Boost.Interprocess提供了互斥锁和条件变量。互斥锁用于保护共享数据的互斥访问,条件变量用于线程间的等待和通知机制。

3.共享内存容器(Shared Memory Containers):Boost.Interprocess提供了一些容器类,如vector、map、list等,这些容器可以在共享内存中存储数据。共享内存容器提供了与STL容器相似的接口和功能,但可以用于多个进程之间的数据共享。

4.共享内存分配器(Shared Memory Allocators):Boost.Interprocess提供了共享内存分配器,可以在共享内存中动态分配和释放内存。共享内存分配器确保在共享内存中的对象能够正确地分配和管理内存,以避免内存碎片和资源泄漏。

Boost.Interprocess是一个功能强大且灵活的库,它具有跨平台的特性,可以在各种操作系统上使用。它提供了简单而一致的接口,使得在C++中使用共享内存变得更加方便和安全。可以轻松地实现进程间通信和数据共享,从而构建高效的多进程应用程序。

😊2. 环境配置

下面进行环境配置:

# apt安装
sudo apt install libboost-dev

编译:

g++ -o main main.cpp -lboost_system -lrt && ./main # -lrt是POSIX的RealTime库

😆3. 使用说明

共享内存读写示例

#include <boost/interprocess/shared_memory_object.hpp>
#include <boost/interprocess/mapped_region.hpp>
#include <iostream>using namespace boost::interprocess;int main()
{// 创建或打开共享内存对象shared_memory_object shm(open_or_create, "my_shared_memory", read_write);// 设置共享内存对象的大小shm.truncate(1024);// 映射共享内存到当前进程的地址空间mapped_region region(shm, read_write);// 获取共享内存的首地址void* addr = region.get_address();// 写入数据到共享内存const char* str = "Hello, Boost.Interprocess!";std::strcpy(static_cast<char*>(addr), str);// 从共享内存读取数据char buffer[1024];std::strcpy(buffer, static_cast<char*>(addr));// 输出读取到的数据std::cout << "Message from shared memory: " << buffer << std::endl;// 删除共享内存对象shared_memory_object::remove("my_shared_memory");return 0;
}

此外,还有托管共享内存同步等操作,用到再学习。

在这里插入图片描述

以上。

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

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

相关文章

java--接口概述

1.认识接口 ①java提供了一个关键字interface&#xff0c;用这个关键字我们可以定义出一个特殊的结构&#xff1a;接口。 ②注意&#xff1a;接口不能创建对象&#xff1b;接口是用来被类实现(implements)的&#xff0c;实现接口的类称为实现类。 ③一个类可以实现多个接口(接…

LVS-DR+Keepalived+动静分离实验

架构图 解释一下架构&#xff0c;大概就是用Keepalived实现两台DR服务器的LVS负载均衡&#xff0c;然后后端服务器是两台Nginx服务器两台Tomcat服务器并且实现动静分离这个实验其实就是把 LVS-DRKeepalived 和 动静分离 给拼起来&#xff0c;真的是拼起来&#xff0c;两个部分…

某60区块链安全之JOP实战一学习记录

区块链安全 文章目录 区块链安全Jump Oriented Programming实战一实验目的实验环境实验工具实验原理实验内容Jump Oriented Programming实战一 实验步骤分析合约源代码漏洞Jump Oriented Programming实战一 实验目的 学会使用python3的web3模块 学会分析以太坊智能合约中中Ju…

目标检测——R-CNN系列检测算法总结

R-CNN系列算法详细解读文章&#xff1a; R-CNN算法解读SPPNet算法解读Fast R-CNN算法解读Faster R-CNN算法解读Mask R-CNN算法解读 目录 1、概述1.1 获取目标候选框1.2 候选框提取特征1.3 候选框分类及边框回归 2、R-CNN系列算法概述2.1 R-CNN算法2.2 SPPNet算法2.3 Fast R-CN…

如何将Java条码Dynamsoft Barcode Reader集成到命令行、GUI和Web应用程序中

Dynamsoft Barcode Reader SDK一款多功能的条码读取控件&#xff0c;只需要几行代码就可以将条码读取功能嵌入到Web或桌面应用程序。这可以节省数月的开发时间和成本。能支持多种图像文件格式以及从摄像机或扫描仪获取的DIB格式。使用Dynamsoft Barcode Reader SDK&#xff0c;…

自动化框架错误排查:本地全通过,pipline上大部分报错

现象: 最近经过一次切环境和验证码部分的代码重构,果不其然,我们的自动化框架就出错了 我在本地修改调试,并在堡垒机上全部跑过 但在pipline上则大部分报错 进一步排查 这么多case报错,而且报错log都一模一样,推断是底层出错 我在堡垒机上使用命令行来跑case,发现与…

Facebook引流怎么做?写个脚本就好!

在当今的数字化时代&#xff0c;流量对于任何一个网站或应用程序来说都至关重要&#xff0c;Facebook&#xff0c;作为全球最大的社交网络平台&#xff0c;无疑是一个获取流量的绝佳场所&#xff0c;但是&#xff0c;如何有效地从Facebook引流呢?写个脚本就好了! 在本文中&am…

封装Servlet使用自定义注解进行参数接收

文章目录 前言一、前后对比✨二、具体实现&#x1f387;三、效果展示&#x1f38f; 前言 先说项目背景&#xff0c;本项目是本人在校期间老师布置的作业&#xff08;就一个CRUD&#xff09;&#xff0c;课程是后端应用程序设计&#xff0c;其实就是servlet和jsp那一套&#xf…

(华为)网络工程师教程笔记(网工教程)网工入门——3、静态路由路由表的配置

参考文章&#xff1a;【全236集】网络工程师从基础入门到进阶必学教程&#xff01;通俗易懂&#xff0c;2023最新版&#xff0c;学完即可就业&#xff01;网工入门_华为认证_HCIA_HCIP_数据通信_网工学习路线 文章目录 13. 网工入门10-静态路由&#xff08;路由表的配置&#x…

做一件荒谬的事:用AI推理下一次双色球结果 v0.1

做一件荒谬的事&#xff1a;用AI推理下一次双色球结果 v0.1 引言 事情的起因是父亲被亲戚安利&#xff0c;突然喜欢上了双色球&#xff0c;连规则和开奖结果怎么看都不懂的他&#xff0c;让我研究研究这个事&#xff0c;给他选个号。他还说老家有好几个人中了几百万&#xff…

异常处理 springboot

全局异常处理 RestcontrollerAdvice Exceptonhandler package com.it.Exception;import com.it.pojo.Result; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice;/*全局异常处理器…

Java中三种定时任务总结(schedule,quartz,xxl-job)

目录 1、Spring框架的定时任务 2、Quartz Quartz的用法 3、xxl-job 3.1 docker 安装xxl-job 3.2 xxl-job编程测试 补充&#xff1a;Java中自带的定时任务调度 1. java.util.Timer和java.util.TimerTask 2. java.util.concurrent.Executors和java.util.concurrent.Sche…