当前位置: 技术问答>linux和unix
多线程中动态链接库的使用
来源: 互联网 发布时间:2017-03-16
本文导语: 请问在多线程内是否可以重复加载动态链接库,对一个DLL的变量,如果希望每个使用DLL的线程都有自己的值应该怎么做呢? | dll是被加载到进程空间的,LoadLibrary返回的值是dll加载到的进程空间...
请问在多线程内是否可以重复加载动态链接库,对一个DLL的变量,如果希望每个使用DLL的线程都有自己的值应该怎么做呢?
|
dll是被加载到进程空间的,LoadLibrary返回的值是dll加载到的进程空间地址,所以都是一样的。这和多线程没有关系。
一个dll在EXE中只会被加载一次,再次调用LoadLibrary仅仅增加模块句柄的引用计数而已,所以无需每个线程都调用LoadLibrary,可以直接使用句柄,或者用GetModuleHandle来获取已加载dll的句柄。
一个dll在EXE中只会被加载一次,再次调用LoadLibrary仅仅增加模块句柄的引用计数而已,所以无需每个线程都调用LoadLibrary,可以直接使用句柄,或者用GetModuleHandle来获取已加载dll的句柄。
|
动态连接库和Win是一样的,
各个线程都有各自的空间,
不会相互影响。
可以放心使用。
其实动态链接库不管怎么调用都不会冲突的。
不管是多线程,多进程,都不会出问题。
只要不是静态链接库。
各个线程都有各自的空间,
不会相互影响。
可以放心使用。
其实动态链接库不管怎么调用都不会冲突的。
不管是多线程,多进程,都不会出问题。
只要不是静态链接库。
|
线程加载DLL后,该dll中用到的变量就被加载到线程本身的栈空间里面去了
所以多个线程同时使用dll不会冲突
所以多个线程同时使用dll不会冲突