两个进程间能使用共享内存段进行数据共享吗?

问题描述

两个进程间能使用共享内存段进行数据共享吗?

我是这样做的:
在一个dll里面定义一个共享数据段,里面定义一个整形数据,然后定义两个导出函数对这个整形数据进行操作。
#pragma data_seg ("ShareDataSeg") //开辟一个名字为"ShareDataSeg"的共享内存段
int g_nShareInt = 0;
#pragma data_seg() //共享内存段"ShareDataSeg"定义结束
//加上这条声明,让这个共享内存段可以在所有动态或静态连接这个DLL的进程中都能看到,这个共享内存段会直接加载到进程堆栈空间
#pragma comment(linker, "/SECTION:ShareDataSeg,RWS")
extern "C" __declspec(dllexport) int SetVal(int val);
extern "C" __declspec(dllexport) int GetVal();

再写两个进程,都加载这个dll,都对这个共享数据段内的整形数据的值进行修改,发现两个进程使用的根本就是两个不同的变量,根本没有进程间共享的效果。
求高手指点!

时间: 2024-08-01 19:08:22

两个进程间能使用共享内存段进行数据共享吗?的相关文章

c++进程间通讯(共享内存)时

问题描述 c++进程间通讯(共享内存)时 我的需求:一个进程批量的数据不间断的存入差不多每秒有400k的数据这样子(不一定是一次存入的,可能是分几次),而另一个内存要从共享内存中读取这些数据,读取完就释放那块内存. 如何使共享的内存具有一定的数据结构,如同stl中的vector那样. 解决方案 需要自己做序列化,反序列化,把数据转回vector.自己定义格式等,知道多大一块内存数据表示一个vector的元素.然后一个个获取,存入vector 解决方案二: 如何使共享的内存具有一定的数据结构?共享

两个进程间的数据共享问题

问题描述 问题是这样的,有两个进程(或者更多的进程),启动的时候都从同一个文件读取数据,在各自的进程中建立对象模型.这两个进程还都可以修改数据.那么,问题来了,如果进程A修改了数据,进程B要适时的获得修改后的数据,应该采用什么样的解决方案来实现呢?因为程序的基础通信架构采用的是WCF,考虑过使用WCF进行通信来同步两个进程间的数据,但设计到的数据维度比较多,如果每一个属性的修改都需要来一次通信的话,这样肯定对性能就会产生很大的影响了.不知道,各位大神是否有更好的方案,烦请赐教!!!谢谢!!! 解

UC编程9-管道pipe操作和共享内存段shm操作

//myuc.h #include<stdio.h>//io流 #include<stdlib.h>//标准库 #include<unistd.h>//uc标准头文件 #include<fcntl.h>//文件控制 #include<string.h>//c字符串 #include<sys/types.h> #include<sys/mman.h>//内存映射 #include<sys/stat.h>//文件状

进程间通讯问题,内存共享的实现

问题描述 需要在多个进程传输数据,其实一个检测进程一直获取检测的数据,供其他进程及时读取使用,数据库不是很大,但是数据更新非常的频繁,考虑到效率问题,不知道用什么方法实现?暂时决定采用内存共享的方式实现.希望各位大虾多加指点.具体怎么实现比较好?需要注意哪些地方?如果有类似的源代码参考就最好了. 解决方案 解决方案二:方案1.使用WM_COPYDATA消息方案2.使用WriteProcessMemory(),ReadProcessMemory()访问其他进程的内存方案3.使用内存镜像文件解决方案

同一进程间的线程共享资源

线程共享的环境包括:   1.进程代码段    2.进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)    3.进程打开的文件描述符.信号的处理器.进程的当前目录和进程用户ID与进程组ID.      进程拥有这许多共性的同时,还拥有自己的个性.有了这些个性,线程才能实现并发性.这些个性包括:    1.线程ID      每个线程都有自己的线程ID,这个ID在本进程中是唯一的.进程用此来标识线程.      2.寄存器组的值      由于线程间是并发运行的,每个线程有自己

php共享内存段示例分享

 在asp.net和java中都有共享内存,php除了可以使用Memcached等方式变通以外其实php也是支持共享内存的,下面使用shmop来实现这个功能   需要安装扩展shmop 找到php安装源文件目录     代码如下: # cd /usr/local/php-5.4.0/ext/shmop # /usr/local/php/bin/phpize # ./configure --with-php-config=/usr/local/php/bin/php-config #  make

php共享内存段示例分享_php实例

 需要安装扩展shmop找到php安装源文件目录 复制代码 代码如下: # cd /usr/local/php-5.4.0/ext/shmop# /usr/local/php/bin/phpize# ./configure --with-php-config=/usr/local/php/bin/php-config#  make && make install 编译安装成功 复制代码 代码如下: # cd /usr/local/php/lib/php/extensions/no-debu

Linux 共享内存 详解

一.什么是共享内存区 共享内存区是最快的可用IPC形式.它允许多个不相关的进程去访问同一部分逻辑内存.如果需要在两个运行中的进程之间传输数据,共享内存将是一种效率极高的解决方案.一旦这样的内存区映射到共享它的进程的地址空间,这些进程间数据的传输就不再涉及内核.这样就可以减少系统调用时间,提高程序效率. 共享内存是由IPC为一个进程创建的一个特殊的地址范围,它将出现在进程的地址空间中.其他进程可以把同一段共享内存段"连接到"它们自己的地址空间里去.所有进程都可以访问共享内存中的地址.如果

Qt之进程间通信(共享内存)

简述 上一节中,我们分享下如何利用Windows消息机制来进行不同进程间的通信.但是有很多局限性,比如:不能跨平台,而且必须两个进程同时存在才可以,要么进程A发了消息谁接收呢? 下面我们来分享另外一种跨平台的进行间通信的方式-Shared Memory(共享内存). Qt提供的基于共享内存的IPC有QSharedMemory类和QSystemSemaphore类,QSharedMemory可以访问共享内存区域,以及多线程和进程的共享内存区域.而QSystemSemaphore类用于访问系统共享资