【问题标题】:Unmanaged thread running Managed Code运行托管代码的非托管线程
【发布时间】:2009-02-04 04:00:46
【问题描述】:

我制作了一个加载客户端制作的外部模块的软件。

这个软件应该是 HA(高可用性),这意味着它不能被允许崩溃。 为此,我创建了一个类,它创建一个线程,在其中运行客户端模块函数,然后返回。该类允许一定的时间来执行函数,如果时间过长,它会杀死线程。像这样,如果客户通过在他的代码中使用无限循环或其他任何东西来搞砸他的模块,系统的其余部分不会冻结。

现在,我有一个问题...如果运行函数的线程是在非托管代码 (C++) 中创建的,并且在其中运行的模块函数是托管代码,那么杀死线程会遇到什么样的问题?

谢谢,

【问题讨论】:

    标签: c# c++ multithreading


    【解决方案1】:

    一般来说,杀死正在运行的进程中的线程是不安全的;请参阅TerminateThread 中的警告和注意事项。

    如果我正在开发这样的应用程序,我会倾向于研究如何在具有明确定义的通信接口的单独进程中托管第 3 方模块;例如:在 COM+ 应用程序中。如果它“失控”,这将允许您杀死整个进程,而不会影响“主机”进程的稳定性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      • 2013-08-24
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      相关资源
      最近更新 更多