我制作了一个加载客户端外部模块的软件。
该软件应该是HA(高可用性),这意味着它不能被允许崩溃。 为此,我创建了一个创建线程的类,在其中运行客户端模块函数,然后返回。该类允许一定时间执行该函数,如果它花费太长时间,它会杀死该线程。像这样,如果客户端通过无限循环或代码中的任何内容搞砸了他的模块,系统的其余部分就不会冻结。
现在,问题是......如果运行该函数的线程是在非托管代码(C ++)中创建的,并且在其中运行的模块函数是托管代码,那么通过查杀该线程我可以遇到什么样的问题? / p>
谢谢,
答案 0 :(得分:3)
通常,在正在运行的进程中杀死线程是不安全的;请参阅TerminateThread中的警告和注释。
如果我正在做这样的应用程序,我倾向于研究如何在一个具有良好定义的通信接口的单独进程中托管第三方模块;例如:在COM +应用程序内部。如果它“失控”,这将允许您终止整个过程,而不会影响“主机”过程的稳定性。