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