Как лучше всего обернуть не-потокобезопасный код в .net framework?
У меня есть сторонняя библиотека, которая не поддерживает потоки из-за использования статических переменных. Переписать это не вариант. Эта библиотека используется веб-службой asp.net, которая принимает множество одновременных вызовов.
В настоящее время я завернул его в прокси-класс, который использует блокировки для обеспечения безопасности потока:
private static readonly object oneThreadAtATimePlease = new object();
public ISomething CalculateSomething(int someValue)
{
lock (oneThreadAtATimePlease)
{
return new UnsafeLibrary(someValue).DoSomething();
}
}
Производительность низкая, так как нескольким абонентам приходится ждать блокировки, но результаты верны.
Я бы хотел повысить производительность, запустив несколько экземпляров этой библиотеки, каждый в своем собственном домене приложений. Это разумный подход? Любой хороший пример кода, чтобы рекомендовать?