TC官方合作论坛

 找回密码
 立即注册
查看: 1245|回复: 6
打印 上一主题 下一主题

[讨论] 关于大漠多线程怎么注册多个对象

[复制链接]
跳转到指定楼层
楼主
发表于 2014-5-14 07:08:19 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
这个问题困扰我很久了,今天查了下。有些收获,分享给大家。动态链接库(Dynamic Link Library或者Dynamic-link library,缩写为DLL),是微软公司在微软视窗操作系统中实现共享函数库概念的一种实作方式。DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。这些库函数的扩展名是.DLL、OCX(包含ActiveX控制的库)或者.DRV(旧式的系统驱动程序)。函数的可执行代码位于一个DLL 中,该DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。DLL 是一个包含可由多个程序同时使用的代码和数据的库。大漠,我认为就是个动态链接库。多线程中动态链接库的使用
请问在多线程内是否可以重复加载动态链接库,对一个DLL的变量,如果希望每个使用DLL的线程都有自己的值应该怎么做呢?

------解决方案--------------------
dll是被加载到进程空间的,LoadLibrary返回的值是dll加载到的进程空间地址,所以都是一样的。这和多线程没有关系。  


一个dll在EXE中只会被加载一次,再次调用LoadLibrary仅仅增加模块句柄的引用计数而已,所以无需每个线程都调用LoadLibrary,可以直接使用句柄,或者用GetModuleHandle来获取已加载dll的句柄。

------解决方案--------------------
动态连接库和Win是一样的,
各个线程都有各自的空间,
不会相互影响。
可以放心使用。

其实动态链接库不管怎么调用都不会冲突的。
不管是多线程,多进程,都不会出问题。

只要不是静态链接库。
------解决方案--------------------
线程加载DLL后,该dll中用到的变量就被加载到线程本身的栈空间里面去了
所以多个线程同时使用dll不会冲突
回复

使用道具 举报

沙发
 楼主| 发表于 2014-5-14 07:09:55 来自手机 | 只看该作者
沙发自己的
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2014-5-14 07:09:57 来自手机 | 只看该作者
沙发自己的
回复 支持 反对

使用道具 举报

地板
发表于 2014-5-14 08:15:03 | 只看该作者
每日一水,水水更健康
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2014-5-17 05:38:22 来自手机 | 只看该作者
没人来啊
回复

使用道具 举报

6#
发表于 2014-8-8 00:07:16 | 只看该作者
这个...我也想知道个明白啊!
到底有个权威的人来论证一下才行呀
回复 支持 反对

使用道具 举报

7#
发表于 2014-9-14 19:22:59 | 只看该作者
能够举例说明吗?
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-9-25 11:55 , Processed in 0.152057 second(s), 22 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表