社区
进程/线程/DLL
帖子详情
两个应用程序同时调用同一个DLL的同一个函数,如何不冲突?
mm7654321
2003-03-21 07:46:40
我有两个应用程序,需要同时启动,但是这两个应用都要调用同一个DLL的同一个函数,内存中数据有冲突,请教有什么方法避免?谢谢!
(两个应用中Loadlibrary返回的地址相同,GetProAddress返回的地址也相同)
...全文
1333
13
打赏
收藏
两个应用程序同时调用同一个DLL的同一个函数,如何不冲突?
我有两个应用程序,需要同时启动,但是这两个应用都要调用同一个DLL的同一个函数,内存中数据有冲突,请教有什么方法避免?谢谢! (两个应用中Loadlibrary返回的地址相同,GetProAddress返回的地址也相同)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mm7654321
2003-03-25
打赏
举报
回复
问题已解决,是我没弄清楚两个应用在同一个进程中,是两个线程。只要控制共享资源的访问就可以了。
谢谢各位!
fbmsf
2003-03-23
打赏
举报
回复
不同的程序加载相同的dll时,会把dll载入自己的地址空间,地址相同,可是他们在不同的进程中。每个进程都有自己独立的4GB的空间。
moonboy1980
2003-03-23
打赏
举报
回复
一般来说,系统会为你COPY两份进行运行,因为地址映射(内存)系统可能会把调用的DLL的函数映射到同一个地址上来节省资源,这是物理地址,地址当然是一样的。你所看到的是逻辑地址,如果一样可能是系统把它认为是系统资源,分配了相同的逻辑地址,这就会存在多进程共享资源而出现互斥问题,系统会解决好他们的互斥。你所说的同时是并发(同一时间间隔内有多个进程执行),单个CPU在同一时刻只能执行一个进程,进程会用逻辑地址调用把数据纳入自己的范围内,不会影响到其他进程,如果两个进程有关系,系统也会解决好他们的同步问题,你不必担心的。
ggeneral2
2003-03-23
打赏
举报
回复
同意楼上
up
mm7654321
2003-03-21
打赏
举报
回复
dll中的函数是用C写的,会不会是因为dll不是编译成多线程版本的?
papaya_stone
2003-03-21
打赏
举报
回复
应该不会有问题的,不同的程序加载相同的dll时,会把dll载入自己的地址空间,地址相同,可是他们在不同的进程中。
不知你的dll中的函数是做什么用的,做了哪些操作。
afc
2003-03-21
打赏
举报
回复
不同进程之间共享DLL的只读数据段,可写的数据段每个进程有单独一份,不会相互冲突啊。
mm7654321
2003-03-21
打赏
举报
回复
Re ArthurTu:
取得的函数内存地址(两个应用均未结束)与process的地址有关系吗?
Re ghgk:
试过了,就是出了问题,才来请教各位的。虽然有先后,但是一个还没结束,另一个已经启动了,数据就出问题了。
ghgk
2003-03-21
打赏
举报
回复
楼主确实试过了?我想应该不会有问题的,比楼主这样更极端的都有。虽然你认为是同时启动,但在系统看来还是有先后区别的。
ArthurTu
2003-03-21
打赏
举报
回复
有什么关系?你看到的地址是在你这个process的地址,和另外一个process有什么关系?
mm7654321
2003-03-21
打赏
举报
回复
有关系阿,因为函数地址相同,两个应用传给函数的变量以及函数内部的变量存储地址都一样,两个应用又同时启动,数据当然会有冲突。会不会跟多线程有关系?(多线程我不大懂的。)
注:
OS:Win2000 pro
stkman
2003-03-21
打赏
举报
回复
应该没关系阿。如果要想有关系,反倒要做手脚。
Free_Man
2003-03-21
打赏
举报
回复
好象没有关系吧
AI拍照识花小程序云开发,无需
调用
后台接口,上线你的识花小程序
并且上线,这对不懂后端的同学来说真是大福利,该门课程利用云开发对接人工智能植物识别接口,完成小程序整个拍照识花项目,并且完成小程序授权登录,小程序制作海报分享朋友圈 【课程收益】 1.掌握小程序云开发基础...
不同进程同时
调用
同一个
DLL
不同进程之间共享
DLL
的只读数据段,可写的数据段每个进程有单独一份,不会相互
冲突
啊。
C# 如何解决 引用的
两个
同名同版本的
DLL
冲突
离职后来到现在这家公司,在这几天接到一个项目要求是要通过淘宝聚石塔API来抓取公司的订单流水。按理说这项任务不算很难,但是,你也知道,壮士出征往往死在离出发地不远的地方。现在我们来研究一下为什么会导致这种原因,以及我们该如何去解决掉这个问题。 一:
DLL
冲突
的特殊性 本次遇到的问题很是棘手,因为在老项目中已经存在阿里巴巴速卖通的API—TopSdk,然后现在要去完成另外一块的内容,...
有关
DLL
的几个问题
一、
DLL
被多个进程
调用
问题 Win32系统会确保内存中只有一个该
DLL
的拷贝,这是通过内存映射文件来实现的。不同的进程分别将这份
DLL
的代码段地址映射到自己的进程空间中,同时不同的进程在自己的进程空间分别有各自的一份该
DLL
的数据段拷贝。 这是因为,在Win32环境中,每个进程都有了它自己的地址空间,
DLL
函数
中的代码所创建的任何对象(包括变量)都归
调用
它的进程所有。当进程在载入
DLL
时,操
警惕C/C++同名
函数
冲突
想象这样一个情景,一个大项目,由
两个
彼此并不熟悉的企业合作完成。最后的交付软件是一个exe以及
两个
dll
。
两个
企业各自负责一个
dll
。巧合的是,
两个
企业开发时,都依赖
同一个
第三方库,比如说,是opencv。但是,双方使用opencv的版本不同。 由于
两个
opencv的
dll
名字不同,所以它们不会覆盖,而是共存(但是它们的头文件都是一样的)。这样带来一种假象,就是
dll
1和
dll
2将各自
调用
各自的opencv库。但事实并非如此。实际上,在链接时,先被链接的
dll
的
函数
将覆盖后面的同名
函数
。 目录 库
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章