Использование доменов приложений для распараллеливания непоточно-ориентированной библиотеки DLL

У меня есть неуправляемая библиотека C ++ DLL. NET-приложение использует через p / invoke. Метод, который мне нужен из этой DLL, занимает довольно много времени, и я хотел бы распараллелить вызовы методов. Проблема в том, что он использует набор статических и глобальных переменных, поэтому он не является потокобезопасным (и не может быть изменен). Мой план состоял в том, чтобы решить эту проблему, не связанную с потокобезопасностью, путем параллельного вызова неуправляемой библиотеки DLL из нескольких доменов приложений.

Я могу без проблем вызывать неуправляемый код из нескольких доменов приложений, если я не делаю это параллельно , но как только я выполняю вызовы параллельно, я получаю AccessViolationException . Я использую Parallel.For () для выполнения параллельных вызовов.

Можно ли сделать небезопасную для потоков неуправляемую DLL «потокобезопасной», просто выполняя вызовы из нескольких доменов приложений?

7
задан dewald 15 May 2011 в 21:52
поделиться