Обеспечивают ли .Net AppDomains защиту от мошеннических библиотек C? - PullRequest
1 голос
/ 03 ноября 2011

У меня есть библиотека C, которая не поточно-безопасна - и, вероятно, никогда не будет. Я звоню из C # с помощью PInvoke, и это прекрасно работает.

Теперь, когда библиотека C должна вызываться из программы на C #, которая, безусловно, является многопоточной. Я могу управлять этим в C #, вызывая каждый экземпляр кода C из отдельных доменов приложений, за исключением того, что это не очень хорошо работает. У меня все еще много проблем с многопоточностью в библиотеке C.

Будут ли домены приложений изолировать беспорядок кода C (глобальные и т. Д.) Друг от друга или нет? Если нет, то что будет?

Ответы [ 3 ]

5 голосов
/ 03 ноября 2011

Нет, AppDomains не поможет. Если вы одновременно вызываете свою C-библиотеку, не имеет значения, с какого AppDomain поступают вызовы.

Если библиотека C lib не является поточно-ориентированной, вам придется сериализовать доступ к ней. На самом деле, наличие нескольких доменов приложений усложняет задачу - вам придется синхронизировать домены.

1 голос
/ 03 ноября 2011

Если у вас есть глобальные / общие переменные в библиотеке C, и вам нужно их изолировать, вам нужно ускорить отдельные процессы.

1 голос
/ 03 ноября 2011

Я думаю, что домены приложений - это конструкция, которая изолирует только управляемый код.

Вы должны синхронизировать доступ к вашей библиотеке c доступными примитивами синхронизации c # /. NET (например, используйте lock блоки).

...