节点杀死线程但不处理

我想知道是否可以终止节点应用程序正在执行的线程,但不是进程。

现在,我知道这听起来很奇怪,因为节点是单线程的,但是我正在处理一个处理进程中的.NET应用程序。 而当我用process.exit()终止节点时,整个应用程序被closures,这是我不想要的行为。 我只想节点线程被终止。

老实说,我非常绝望,我甚至尝试过,获取所有应用程序线程的列表,在创build线程在哪​​个节点正在执行之前,然后创build另一个列表,然后删除所有在开始节点之前存在的线程,保持引用剩余的线程,认为它是节点线程。 正如你所期望的那样,结果并不好。

我使用EdgeJS主机节点,如果这有什么区别。 不幸的是,它没有内置的function来终止自己。

哦, server.close()不适合我,出于某种原因。

我在我的节点代码中托pipe一个videostream服务器,如果这个信息可以以任何方式帮助你的话。

感谢所有提前的帮助!

节点线程需要通过清除事件循环中正在运行的所有内容进行合作,然后通过返回自然终止。 所以只要停止监听请求,closures句柄等。你可以使用process._getActiveRequestsprocess._getActiveHandles来看看什么是保持事件循环活着。

您也可以通过调用OS API来突然中断节点线程,但是这将会泄漏大量垃圾,直到您退出进程,因此无法重新启动/重新启动节点,然后仍然需要退出进程以释放泄露的资源。