我有一个不是线程安全的 C 库——而且可能永远不会。我使用 PInvoke 从 C# 调用它,结果非常好。
现在必须从肯定是多线程的 C# 程序调用 C 库。我可以在 C# 中通过从单独的 AppDomains 调用 C 代码的每个实例来管理它,但似乎效果不是很好。我在 C 库中仍然遇到很多跨线程问题。
AppDomains 是否会将困惑的 C 代码(全局变量等)彼此隔离开来?如果不是,那会是什么?
最佳答案
不,AppDomains 无济于事。如果您同时调用您的 C 库,调用来自哪个 AppDomain 并不重要。
如果 C 库不是线程安全的,您将不得不序列化访问它。实际上,拥有多个 AppDomain 会使这变得更难 - 您将必须跨域同步。
关于c# - .Net AppDomains 是否提供针对流氓 C 库的保护?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7998127/