社区
进程/线程/DLL
帖子详情
多个线程调用一个dll的同一个接口
Tiger-3D
2013-10-08 11:28:38
程序加载了一个dll,之后该程序的多个线程调用一个dll的同一个接口。
一个线程调用dll的这个接口之后,这个接口还没有返回,另一个个线程又调用了这个接口,那么dll中,是处理怎么第二个调用的?是让第二个调用等待,还是和第一个接口并行调用?
...全文
1054
8
打赏
收藏
多个线程调用一个dll的同一个接口
程序加载了一个dll,之后该程序的多个线程调用一个dll的同一个接口。 一个线程调用dll的这个接口之后,这个接口还没有返回,另一个个线程又调用了这个接口,那么dll中,是处理怎么第二个调用的?是让第二个调用等待,还是和第一个接口并行调用?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
红色代码
2013-10-26
打赏
举报
回复
如果DLL或者线程中没有同步机制的话,当然会并行执行
nbabn
2013-10-09
打赏
举报
回复
跟你的普通代码一样的调用机制,没有任务特殊之处,DLL加载到你的进程空间了,你多线程执行DLL的代码,和你多线程执行自己写的代码一样,没什么特别的,多线程调用该注意的地方也都一样。
翅膀又硬了
2013-10-08
打赏
举报
回复
不一定什么样。跟接口的实现有关系。可以把动态库的接口看成普通函数。如果接口允许多个线程并行用,就是“和第一个接口并行调用”。如果不允许(加锁了)就是“让第二个调用等待”,即便加锁,等待也是在接口内部等待(进入锁之前的等)
昨夜无风
2013-10-08
打赏
举报
回复
全部都是局部变量可以并行,但是如果有全局变量就需要加锁
许文君
2013-10-08
打赏
举报
回复
异步调用如果涉及全局资源则需要加锁,如果是形如
int add(int a,int b) {return a+b;}
这种就不需要,若这dll非你所开发,那该咨询相应开发人员。
davidyu720
2013-10-08
打赏
举报
回复
没听说过:多个线程调用一个dll的同一个接口时,Windows会有同步处理。 多个线程可以任意调用一段代码(自己程序的代码也好,DLL的接口方法也好)。 如果任意调用会导致逻辑错误(比如一个线程调用未返回,另一个线程又去调用),就必须给方法加上同步保护。
oyljerry
2013-10-08
打赏
举报
回复
Dll多线程调用,Windows会有同步处理,所以要防止造成死锁
homesos
2013-10-08
打赏
举报
回复
如果在DLL的接口中没有数据冲突(如对同一内存的使用和销毁),各个线程同时使用没有问题,如果有冲突(如资源对象,像串口SOCKET等),就需要加锁,同一时间只能有一个线程在使用接口逻辑。
多
线程
调用
DLL
(面向对象)
前言: 关于
DLL
的说明,这里所使用的
DLL
,并非是一些功能函数的集合,每次
调用
一个
函数实现相应功能即可。而是封装了
一个
“小程序对象”,其前身是OCX,我们将OCX封装为
一个
DLL
。 因此,此
DLL
中会存在某个对象A,生存周期伴随
调用
它的程序。 可以认为,A便是我们封装的“小程序对象”。
DLL
所有的
接口
,实际上都是对应
调用
A的成员函数。
C++
调用
多
线程
DLL
,多
线程
调用
回调函数
【情景】 在C++代码中要
调用
C++编写的
dll
中的
一个
函数,并传递
一个
回调函数(很明显,这里应该传递
一个
委托),C++函数在内部通过
一个
额外的
线程
在后台运行,完成工作后通过这个回调函数通知前台的C++代码。。。。 【问题】 在经过很长时间的混合调试后发现,回调函数(也就是C++中传递的委托)能顺利被
调用
,然后返回C++代码,然后vs就会提示缓冲区溢出或者堆栈之类的错误,程序崩溃。如果不是单...
Java 多
线程
调用
C++
dll
前段时间到
一个
公司工作。在工作期间,需要给公司解决
一个
java
调用
dll
的问题,该公司以前的java掉用
dll
存在
一个
多
线程
的问题。经过一天多的思考和分析。得出解决办法。以下是我对这个问题的一些想法。 1。 该
dll
中定义了许多全局变量,并且每回要
调用
dll
时都要根据
调用
端的情况来初始化这些全局变量。所以当多
线程
调用
时,就会出现数据混乱。因为全局变量在
一个
进程中是共享的。
java
调用
dll
是多
线程
的_java
调用
dll
,是否可以多
线程
调用
dll
的方法?
以下内容源于网络:http://blog.csdn.net/hust_liuX/archive/2006/12/25/1460486.aspxjava中要访问C++代码时, 使用JNI是唯一选择. 然而,在多
线程
的情况下, 可能出现以下问题:问题描述:
一个
java对象通过JNI
调用
DLL
中
一个
send()函数向服务器发送消息,不等服务器消息到来就立即返回.同时把JNI
接口
的指针JNIEnv *en...
DLL
之多
线程
动态连接库有其自身的优点,如节省内存(例如,
多个
应用程序可以共享
一个
DLL
文件,真正实现了资源"共享",大大缩小了应用程序的执行代码,有效地利用了内存,而且
DLL
文件作为
一个
单独的程序模块,封装性、独立性好,有利于提高软件开发和维护的效率。)、支持多语种等功能,而且,当
DLL
中的函数改变后,只要不是参数的改变,
调用
函数并不需要重新编译。 Non-MFC
DLL
:指的是不用MFC的类库结构,直接用
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章