Cli*_*rce 1 c c# multithreading appdomain
我有一个不是线程安全的C库- 可能永远不会.我用PInvoke从C#调用它,这很好用.
现在必须从C#程序调用C库,这个程序肯定是多线程的.我可以在C#中通过从单独的AppDomains调用每个C代码实例来管理它,除了看起来效果不佳.我仍然在C库中遇到很多跨线程问题.
AppDomains是否会将C代码混乱(全局等等)彼此隔离或不隔离?如果没有,会是什么?
不,AppDomains无济于事.如果同时调用C lib,则调用来自哪个AppDomain无关紧要.
如果C lib不是线程安全的,则必须序列化对它的访问.实际上,拥有多个AppDomain会使这更难 - 您必须跨域同步.