社区
嵌入开发(WinCE)
帖子详情
关于多进程dll中全局变量问题
别以为你站在珠峰就能看到全世界
2012-04-11 04:53:11
在网卡驱动定义了一些全局变量,需要实现多进程共享(系统和应用程序都会加载,所以必须能实现多进程共享)
用过#pragma data_seg无效。
请问还有什么别的方法吗?
...全文
127
6
打赏
收藏
关于多进程dll中全局变量问题
在网卡驱动定义了一些全局变量,需要实现多进程共享(系统和应用程序都会加载,所以必须能实现多进程共享) 用过#pragma data_seg无效。 请问还有什么别的方法吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
别以为你站在珠峰就能看到全世界
2012-04-13
打赏
举报
回复
#pragma data_seg("AX88180")
PAX_ADAPTER g_Adapter = NULL;
#pragma data_seg()
#pragma comment(linker,"/SECTION:AX88180,RWS")
共享了g_Adapter,发现指针是指向同一个地方,数据读出来也一样。但是第二个进程无法写操作。
进行写操作驱动就会报Data Abort。
西山小月
2012-04-12
打赏
举报
回复
内存映射,或者文件。
zhengmeifu
2012-04-12
打赏
举报
回复
CE底下有个共享变量的分区,专门用来从BOOTLOADER传递参数到CE内核的。这个共享变量是可以使用的。只要不超过一个扇区的大小(512BYTE)就行了。
qwqwqw408
2012-04-12
打赏
举报
回复
多进程共享,方式太多了,如果是只读的话,默认所有进程都是共享的吧。
qwqwqw408
2012-04-12
打赏
举报
回复
什么叫共享变量。。求解释
91program
2012-04-11
打赏
举报
回复
采用共享变量的方法试试,可以在不同进程之间共享数据
dll
中
的
全局变量
对于自定义
dll
,(非系统
dll
):
多进程
分别加载
dll
时,由于各进程的地址空间是相互独立不可见的,
dll
的数据段是每个进程一份,
全局变量
互不影响。 同一个进程的多个线程多次loadlibrary加载
dll
时,第一次loadlibrary时,进程载入指定的动态链接库,并将它映射到当前进程使用的地址空间。第二次及以后loadlibrary时,只会影响module的引用计数,返回的影像和句柄都是一样的。当然,
全局变量
也是同一个内存地址,多线程
中
,一次更改,全部可见,需要同步。 对于系统
dll
,使用虚拟地
Windows IPC机制:
DLL
文件
中
的
全局变量
共享
默认情况下,每个进程加载的
DLL
会在其独立的内存空间
中
创建
全局变量
的副本,这导致了
全局变量
在不同进程之间的数据不一致性。但是,通过一些特定的技术手段,我们可以实现
DLL
文件
中
全局变量
的共享,使得多个进程可以访问和修改同一个
全局变量
的值。需要注意的是,虽然
DLL
文件可以实现
全局变量
的共享,但同时也带来了一些
问题
。通过合理设计和使用
DLL
文件,可以实现
全局变量
的共享,从而满足不同进程之间的数据通信和共享需求。不同进程加载同一个
DLL
文件时,它们都会共享同一个
全局变量
的内存空间,从而实现了跨进程的数据共享。
使用
DLL
在多个进程间共享
全局变量
默认情况下,同一个程序启动多个进程,它们各自的变量值是不会相互影响的。第二个实例启动后,在修改
全局变量
的时候,系统会运用内存管理系统copy- on-write的特性来防止修改了第一个实例的数据,即系统会再分配一些内存,并将
全局变量
复制到这块内存
中
,每个实例使用自己的内存空间上的数据而互不影响。有时候我们想在多个进程间共享数据,windows提供了这种方法,就是创建自己的共享数据节,并将需要共
多进程
引用动态链接库
中
的
全局变量
问题
多进程
引用动态链接库
中
的
全局变量
问题
现象描述:前提:存在一个动态库libvlan.so,存在一个应用console。做法:在console
中
调用libvlan.so
中
的两个APIs,分别是设置和获取动态库
中
一个
全局变量
的值。结果:在console
中
的操作没有
问题
,设置和获取都正常;但在动态库
中
打印该
全局变量
,其值并没有改变。结论:动态库
中
的
全局变量
,在被其他进程使用时,会拷贝一份,所以多个进程使用同一个动态库
中
的
全局变量
也不会相互影响。也不会改变动态库
中
该变量的值。类似于fork的COW技术。网络资料:现有
当调用的
DLL
中
有
全局变量
时调用它的多个实例是否共享同一个
全局变量
当调用的
DLL
中
有
全局变量
时调用它的多个实例是否共享同一个
全局变量
????? 收藏 当调用的
DLL
中
有
全局变量
时调用它的多个实例是否共享同一个
全局变量
????
问题
的起因原于自己在工作
中
需要调用一个动态库,而其
中
要用到一个全局的变量才能把需要的句柄给传出来,于是就想,如果有多个进程要调用这个动态库时,后面的进程调用同一个动态库时,是否会把以前调用同一个动态库时的
全局变量
的值改变?????我猜
嵌入开发(WinCE)
19,502
社区成员
41,568
社区内容
发帖
与我相关
我的任务
嵌入开发(WinCE)
硬件/嵌入开发 嵌入开发(WinCE)
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章