社区
进程/线程/DLL
帖子详情
关于同一个dll被多个进程加载的共享问题?
zhvfeng
2004-01-07 09:32:44
我写了一个dll,该dll会被多个进程调用,我在dll中写了一个class,能否实现多个进程中用到的该class始终是同一个实例?
...全文
205
3
打赏
收藏
关于同一个dll被多个进程加载的共享问题?
我写了一个dll,该dll会被多个进程调用,我在dll中写了一个class,能否实现多个进程中用到的该class始终是同一个实例?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vcforever
2004-01-07
打赏
举报
回复
不可以,每个进程加载DLL的时候都会将该DLL加载到自身进程的地址空间中,只有定义在共享段中的一些简单的类型可以!
zhvfeng
2004-01-07
打赏
举报
回复
不是有内存共享吗?但我试了,只能共享简单的int,char什么的,而不能共享类
victor_cui
2004-01-07
打赏
举报
回复
不可以,每个进程使用的不是同一个副本,映射到了不同的地址空间上
纯资源
DLL
(
加载
和调用)
用
DLL
装载资源,然后在EXE中调用。 在有
多个
进程
进行资源
共享
的情况下,可以节约空间
关于
同一个
dll
被
多个
进程
加载
的
共享
问题
每个
进程
加载
DLL
的时候都会将该
DLL
加载
到自身
进程
的地址空间中,只有定义在
共享
段中的一些简单的类型可以。每个
进程
使用的不是
同一个
副本,映射到了不同的地址空间上。
同一个
dll
被
多个
进程
使用的数据
共享
(Data_seg)
同一个
dll
被
多个
进程
使用的时候,在大多数情况下,各个
进程
使用
dll
和独自使用
dll
效果是相同的。 因为对于
dll
中的局部变量是写入到
进程
的堆栈中的,全局变量也被操作系统为每个线程copy一份各自使用。 you can use either of the following approaches: · Create named data sections using the data_seg pragma. · Use memory mapped files. See t
DLL
入门浅析 - 多
进程
加载
DLL
内存模型
DLL
入门浅析(5)——使用
DLL
在
进程
间
共享
数据 在Win16环境中,
DLL
的全局数据对每个载入它的
进程
来说都是相同的,因为所有的
进程
用的都收同一块地址空间;而在Win32环境中,情况却发生了变化,每个
进程
都有了它自己的地址空间,
DLL
函数中的代码所创建的任何对象(包括变量)都归调用它的
进程
所有。当
进程
在载入
DLL
时,操作系统自动把
DLL
地址映射到该
进程
的私有空间,也就是
使用
DLL
在
多个
进程
间
共享
全局变量
默认情况下,
同一个
程序启动
多个
进程
,它们各自的变量值是不会相互影响的。第二个实例启动后,在修改全局变量的时候,系统会运用内存管理系统copy- on-write的特性来防止修改了第一个实例的数据,即系统会再分配一些内存,并将全局变量复制到这块内存中,每个实例使用自己的内存空间上的数据而互不影响。有时候我们想在
多个
进程
间
共享
数据,windows提供了这种方法,就是创建自己的
共享
数据节,
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章