c# - .Net AppDomains 是否提供针对流氓 C 库的保护?

标签 c# c multithreading appdomain

我有一个不是线程安全的 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/

相关文章:

c# - 传递参数表达式导致奇怪的错误

c# - 日期时间有太多小数位

C# 通过对象拆箱

c - 两个文件都以二进制模式打开,无法从其他文件完全复制文件

c# - 使用 LINQ to dictionary 新建字典

c - 在 C 中使用宏清除缓冲区是个坏主意吗?

android - Android中webview与libc.so文件的关系

linux - Linux 管道缓冲区有多少数据? linux 管道缓冲区大小可以配置吗?

c++ - 多线程程序导致段错误,使用 std::list::push_back

Java同步-IllegalMonitorStateException