社区
进程/线程/DLL
帖子详情
多个线程调用一个dll的同一个接口
Tiger-3D
2013-10-08 11:28:38
程序加载了一个dll,之后该程序的多个线程调用一个dll的同一个接口。
一个线程调用dll的这个接口之后,这个接口还没有返回,另一个个线程又调用了这个接口,那么dll中,是处理怎么第二个调用的?是让第二个调用等待,还是和第一个接口并行调用?
...全文
1057
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等),就需要加锁,同一时间只能有一个线程在使用接口逻辑。
Java多
线程
快速上手经典
从零开始讲述Java多
线程
的核心知识,通过板书和一步一步画图的方式,引领大家逐步去理解和掌握这些知识;并深入分析源码实现,理解背后的实现原理,知其然还要知其所以然。从多
线程
核心基础讲起,理解
线程
的风险,多种创建
线程
的方式;再到深入理解
线程
的状态;然后是
线程
的基本操作。系统、深入、快速上手实现多
线程
。 课程目标: 快速上手掌握Java多
线程
的经典课程, 系统、全面、深入掌握Java多
线程
的核心知识主讲老师:CC老师 20年Java开发和使用经验,多年的首席架构师和CTO,畅销原创书籍《研磨设计模式》的作者。 参与和领导了上百个大中型项目的设计和开发,在互联网应用系统架构、系统设计、 应用级框架和中间件开发等方面具有很多经验和领悟。 更为难得的是,入行20年,仍然奋战在技术一线,深知一线架构师需要掌握哪些技术、 掌握到什么程度、一线架构设计会遇到哪些坑、如何才能做出最合适的架构设计,经验最难得!适应人群: 想要系统、深入学习Java多
线程
已有Java开发基础,想要快速掌握Java多
线程
补充Java多
线程
知识,为进入一线大厂做准备学习方式:随到随学课程内容:第一节课:系统理解Java并发编程的知识体系 1:为什么要掌握Java并发编程 2:整个课程的目标 3:整个课程的学习内容第二节课:
线程
必备基础知识 1:理解
线程
是什么,理解进程,图示 2:理解轻量级的含义 3:理解时序调度,
线程
是时序调度的基本单元,图示 4:理解调度方式:抢占式,图示 5:理解我们写的程序基本都是多
线程
的应用,图示 6:理解并发和并行,图示 7:为什么需要
线程
第三节课:
线程
的风险 1:
线程
安全性问题,图示 2:
线程
的活跃度问题:死锁、饥饿、活锁,图示 3:
线程
的性能问题,这里主要是
线程
间切换 上下文的开销第四节课:创建
线程
的方式之一 1: 代码演示:实现Runnable
接口
的方式来创建
线程
2:学习Thread类的方法和属性的应用 3:学习Thread类的源码第五节课:创建
线程
的方式之二 1:继承Thread的方式来创建
线程
2:继续学习Thread类的源码,分析
线程
初始化过程 3: 代码演示:演示ThreadGroup 4: 代码演示:演示daemon
线程
,理解daemon
线程
和主
线程
的关系第六节课:创建
线程
的方式之三 1: 代码演示:匿名内部类的方式来创建
线程
2:继续学习Thread类的源码,分析run方法的
调用
过程 3:代码演示:callable的方式来创建
线程
,带返回值 4: 学习FutureTask的部分源码,分析run方法到call方法的
调用
过程第七节课:
线程
状态详解 1:通过Thread源码来查看
线程
状态的定义 2:一步一步画图,讲述状态之间的变迁第八节课:
线程
的基本操作sleep 和yield 1:阅读Thread源码 2:代码演示:sleep的使用 3:代码演示:yield的使用 4:sleep和yield的对比理解第九节课:
线程
的基本操作join和interrupt 1:阅读Thread源码 2:代码演示:join的使用 3:代码演示:interrupt的使用这里是《Java并发编程与源码分析》的第一部分——讲述多
线程
核心基础实现快速上手多
线程
的经典之作
C#多
线程
调用
C++封装
Dll
【代码】C#多
线程
调用
C++封装
Dll
。
多
线程
调用
DLL
(面向对象)
前言: 关于
DLL
的说明,这里所使用的
DLL
,并非是一些功能函数的集合,每次
调用
一个
函数实现相应功能即可。而是封装了
一个
“小程序对象”,其前身是OCX,我们将OCX封装为
一个
DLL
。 因此,此
DLL
中会存在某个对象A,生存周期伴随
调用
它的程序。 可以认为,A便是我们封装的“小程序对象”。
DLL
所有的
接口
,实际上都是对应
调用
A的成员函数。
C++
调用
多
线程
DLL
,多
线程
调用
回调函数
【情景】 在C++代码中要
调用
C++编写的
dll
中的
一个
函数,并传递
一个
回调函数(很明显,这里应该传递
一个
委托),C++函数在内部通过
一个
额外的
线程
在后台运行,完成工作后通过这个回调函数通知前台的C++代码。。。。 【问题】 在经过很长时间的混合调试后发现,回调函数(也就是C++中传递的委托)能顺利被
调用
,然后返回C++代码,然后vs就会提示缓冲区溢出或者堆栈之类的错误,程序崩溃。如果不是单...
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
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章