C++共享内存实现

C++共享内存实现服务端 1 创建共享内存区域 nbsp 2 内存映射到当前进程 3 写入数据 include stdafx h include lt windows h gt include lt iostream gt usingnamespa defineBUF SIZE4096intm 定义共享数据 charszBuffer

服务端:(1)创建共享内存区域  (2)内存映射到当前进程 (3)写入数据

#include "stdafx.h" #include 
  
    #include 
   
     using namespace std; #define BUF_SIZE 4096 int main() { // 定义共享数据 char szBuffer[] = "我姓易,却发现爱你不易。"; // 创建共享文件句柄 HANDLE hMapFile = CreateFileMapping( INVALID_HANDLE_VALUE, // 物理文件句柄 NULL, // 默认安全级别 PAGE_READWRITE, // 可读可写 0, // 高位文件大小 BUF_SIZE, // 低位文件大小 L"ShareMemorySZHC" // 共享内存名称 ); // 映射缓存区视图 , 得到指向共享内存的指针 LPVOID lpBase = MapViewOfFile( hMapFile, // 共享内存的句柄 FILE_MAP_ALL_ACCESS, // 可读写许可 0, 0, BUF_SIZE ); // 将数据拷贝到共享内存 strcpy((char*)lpBase, szBuffer); cout <<"服务:"<< (char*)lpBase << endl; // 线程挂起等其他线程读取数据 Sleep(20000); // 解除文件映射 UnmapViewOfFile(lpBase); // 关闭内存映射文件对象句柄 CloseHandle(hMapFile); return 0; } 
    
  

客户端:(1)打开共享内存区域  (2)内存映射到当前进程 (3)读出数据

#include "stdafx.h" #include 
  
    #include 
   
     using namespace std; #define BUF_SIZE 4096 int main() { // 打开共享的文件对象 HANDLE hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, NULL, L"ShareMemorySZHC"); //cout << hMapFile << endl; if (hMapFile) { LPVOID lpBase = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0); // 将共享内存数据拷贝出来 char szBuffer[BUF_SIZE] = { 0 }; strcpy_s(szBuffer, (char*)lpBase); cout <<"客户:"<< szBuffer << endl; // 解除文件映射 UnmapViewOfFile(lpBase); // 关闭内存映射文件对象句柄 CloseHandle(hMapFile); } else { // 打开共享内存句柄失败 cout << "打开共享失败!" << endl; } return 0; } 
    
  

运行截图

C++共享内存实现


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220760.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午7:43
下一篇 2026年3月17日 下午7:43


相关推荐

  • DuplicateHandle用法

    DuplicateHandle用法The nbsp DuplicateHan Thereturnedd sprocessspac 从当前进程复制句柄到其他进程空间 ALLofthefoll Createa

    2026年3月19日
    2
  • Shell脚本编程_shell简单脚本

    Shell脚本编程_shell简单脚本文章目录1.shell概述1.1shell和shell脚本1.2Shell脚本应用场景1.4shell类型1.shell概述1.1shell和shell脚本  shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务,在用户和内核之间充当翻译官的角色,是一个命令解释器。KenThompson的sh是第一种UnixShell,WindowsExplorer是一个典型的图形界面shell。  shell脚本(

    2026年4月14日
    6
  • java 无锁编程_使用CAS、FAA实现无锁编程

    java 无锁编程_使用CAS、FAA实现无锁编程锁会导致性能降低,在特定情况可用硬件同步原语替代锁,保证和锁一样数据安全,同时提供更好性能。硬件同步原语(AtomicHardwarePrimitives)由计算机硬件提供的一组原子操作,较常用的原语主要是CAS和FAA两种。CAS(CompareandSwap)比较交换FAA原语(FetchandAdd)语义是,先获取变量p当前的值value,然后给变量p增加inc,最后返回变量p之…

    2022年6月3日
    57
  • Seata-Saga模式 原理

    Seata-Saga模式 原理1Saga模式示例1.1Saga状态机工具状态机设计组件:seata-saga-statemachine-designer状态机在线画图工具:saga_designer1.2代码示例github上Seata-sample有完整的示例代码,SeataSaga模式中有此示例的完整介绍和分析。这里仅摘取部分和介绍原理有关的代码进行分析。1.2.1初始化dbmysql示例:CREATETABLEIFNOTEXISTS`seata_state_machine_def`(

    2026年1月26日
    3
  • python与java的区别(java 和python)

    java和python区别Python或Java,哪个更好?这个问题在全球开发者社区引发了许多激烈的讨论。初学者开发人员可能对应该掌握两者中的哪一个有所怀疑。初创公司和公司可能想知道哪种方案在他们的下一个项目中会更好。这两种语言都可以以相同的效率解决许多任务,这不足为奇。但是,在某些情况下,一个人可以击败另一个人。在本文中,我们将基于多个方面来分析它们的优缺点。对于那…

    2022年4月18日
    89
  • 网站敏感词过滤的实现(附敏感词库)「建议收藏」

    网站敏感词过滤的实现(附敏感词库)「建议收藏」现在基本上所有的网站都需要设置敏感词过滤,似乎已经成了一个网站的标配,如果你的网站没有,或者你没有做相应的处理,那么小心相关部门请你喝茶哦。最近在调研Javaweb网站的敏感词过滤的实现,网上找了相关资料,经过我的验证,把我的调研结果写出来,供大家参考。一、敏感词过滤工具类把敏感词词库内容加载到ArrayList集合中,通过双层循环,查找与敏感词列表相匹配的字符串,如果找到以*号替换…

    2022年6月12日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号