我有一个非托管 C++ DLL,我的 .NET 应用程序通过 p/invoke 使用它。我从这个 DLL 中需要的方法相当耗时,我想并行化方法调用。问题是它使用了一堆静态和全局变量,因此它不是线程安全的(并且无法更改)。我的计划是通过从多个 AppDomain 并行调用非托管 DLL 来克服这个非线程安全问题。
只要我不并行执行,我就可以从多个 AppDomain 调用非托管代码,没有任何问题,但是一旦我并行调用,我就会得到一个AccessViolationException
。我正在使用 Parallel.For() 进行并行调用。
是否可以通过简单地从多个 AppDomain 进行调用来使非线程安全的非托管 DLL 成为“线程安全”?
从多个调用本机方法AppDomain
实例在这里根本不会帮助你。AppDomain
边界不适用于本机 DLL,并且它们不会提供任何好处
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)