多个线程调用一个dll的同一个接口 程序加载了一个dll,之后该程序的多个线程调用一个dll的同一个接口。一个线程调用dll的这个接口之后,这个接口还没有返回,另一个个线程又调用了这个接口,那么dll中,是处理怎么第二个调用的?是让第二个调用等待,还是和第一个接口并行调用? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果在DLL的接口中没有数据冲突(如对同一内存的使用和销毁),各个线程同时使用没有问题,如果有冲突(如资源对象,像串口SOCKET等),就需要加锁,同一时间只能有一个线程在使用接口逻辑。 Dll多线程调用,Windows会有同步处理,所以要防止造成死锁 没听说过:多个线程调用一个dll的同一个接口时,Windows会有同步处理。多个线程可以任意调用一段代码(自己程序的代码也好,DLL的接口方法也好)。如果任意调用会导致逻辑错误(比如一个线程调用未返回,另一个线程又去调用),就必须给方法加上同步保护。 异步调用如果涉及全局资源则需要加锁,如果是形如 int add(int a,int b) {return a+b;}这种就不需要,若这dll非你所开发,那该咨询相应开发人员。 跟你的普通代码一样的调用机制,没有任务特殊之处,DLL加载到你的进程空间了,你多线程执行DLL的代码,和你多线程执行自己写的代码一样,没什么特别的,多线程调用该注意的地方也都一样。 如果DLL或者线程中没有同步机制的话,当然会并行执行 请高手看看! CString类型字符串,怎么判断该字符串的结尾处是“.xxx”?? VC++2005(8) 能开发基于.NET的Windows应用吗? 怎么能得到鼠标所在处的控件ID和HANDLE 请问有做人脸识别的吗?哪里可以找到人脸识别的代码? 收集c/s模型的代码 这个问题困扰我很久了,希望各位能帮我想点方法解决他。在此高分答谢! 在MFC中如何得到当前系统安装的TRUETYPE字体 请问这样操作STL(MAP)是否有问题: 如何获取usb接口摄像头采集的图像数据 MFC下拉列表问题,求助啊 大神帮忙看段代码,多线程内存泄露问题!
如果任意调用会导致逻辑错误(比如一个线程调用未返回,另一个线程又去调用),就必须给方法加上同步保护。
{return a+b;}这种就不需要,若这dll非你所开发,那该咨询相应开发人员。