Неуправляемый поток, выполняющий управляемый код - PullRequest
0 голосов
/ 04 февраля 2009

Я сделал программное обеспечение, которое загружает внешний модуль, сделанный клиентами.

Предполагается, что это программное обеспечение HA (высокая доступность), что означает, что оно НЕ МОЖЕТ иметь сбой. Для этого я создал класс, который создает поток, запускает в нем функцию клиентского модуля и возвращает. Класс дает определенное время для выполнения функции, и если это занимает слишком много времени, он убивает поток. Например, если клиент испортил свой модуль, используя бесконечный цикл или что-то еще в своем коде, остальная часть системы не зависает.

Теперь вопрос, который у меня возникает ... Если поток, выполняющий функцию, создан в неуправляемом коде (C ++), а функция модуля, выполняемая в нем, является управляемым кодом, какую проблему я могу иметь, убив поток? 1005 *

Спасибо,

1 Ответ

3 голосов
/ 04 февраля 2009

Обычно небезопасно уничтожать поток в работающем процессе; см. предупреждения и примечания в TerminateThread .

Если бы я делал такое приложение, я был бы склонен исследовать способы размещения стороннего модуля в отдельном процессе с четко определенным интерфейсом связи; Например: внутри приложения COM +. Это позволит вам уничтожить весь процесс, если он выйдет из-под контроля, не влияя на стабильность процесса «хоста».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...