多次加载Dll以允许.Net中的多线程
发布时间:2020-12-13 20:30:18 所属栏目:Windows 来源:网络整理
导读:我的.Net程序使用fortran Dll来执行数学函数(Arpack,求解本征模式).我相信fortran包含静态变量,通常不是线程安全的.此外,它非常复杂,可能需要花费大量精力才能使其保持线程安全. Dll不是很大(700K)所以我只想加载它多次(比如4或8)以允许线程同时工作.任何人
我的.Net程序使用fortran Dll来执行数学函数(Arpack,求解本征模式).我相信fortran包含静态变量,通常不是线程安全的.此外,它非常复杂,可能需要花费大量精力才能使其保持线程安全. Dll不是很大(700K)所以我只想加载它多次(比如4或8)以允许线程同时工作.任何人都知道我怎么能这样做?我听说LoadLibrary在多次调用时总会返回相同的句柄.因此,我认为唯一的解决方案是在磁盘上安装我的Dll的多个副本(Arpack1.dll,Arpack2.dll等)并根据需要加载它们.太可怕了.
有任何想法吗? 尤安
你找到的解决方法实际上是相当不错的.使用LOAD_LIBRARY_AS_IMAGE_RESOURCE选项的LoadLibraryEx()可能会有小的可能性.该选项允许您多次加载它.我严重怀疑它,DLL几乎肯定依赖于通过DllMain初始化其运行时支持代码.
我没有听到你提到的一件事是必须使用GetProcAddress()的痛苦.确保你这样做,或者当你开始线程时你仍然会踩踏全局变量.每个线程必须使用自己的地址. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- .net – 如何保护自己免受失控的内存消耗,降低PC?
- windows-server-2008 – 使用SMB2的2008 / 2008R2股票的奇怪
- windows – 如何将std = c 11标志添加到clang-cl?
- windows-server-2012-r2 – 用户文件夹被重命名为“我的文档
- com – 错误0x800706F7“存根接收到错误数据”在Windows XP
- 在简单的.NET Windows应用程序中将数据保存在何处?
- 为域上的所有Windows服务器设置时区(2008 R2)
- 如何登录到Windows XP / 7使用USB记忆棒进行身份验证
- 更改整个控制台背景颜色(Win32 C)
- 替换Windows系统自带记事本
推荐文章
站长推荐
热点阅读