节点杀死线程但不处理

时间:2015-03-22 01:40:19

标签: node.js multithreading terminate

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

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

老实说,我非常绝望,我甚至尝试过,在创建执行节点的线程之前获取所有应用程序线程的列表,然后在创建之后获取另一个列表,然后删除在启动节点之前存在的所有线程,保持对剩余线程的引用,认为它是节点线程。正如你所料,这并没有那么好。

我正在使用EdgeJS来托管节点,如果这有任何区别的话。遗憾的是,它没有内置功能来终止自身。

哦,server.close()由于某些原因对我不起作用。

我正在我的节点代码中托管视频流服务器,如果该信息可以以任何方式为您提供帮助。

提前感谢您的所有帮助!

1 个答案:

答案 0 :(得分:3)

节点线程需要通过清除事件循环上运行的所有内容来协作,然后通过返回自然终止。所以只需停止侦听请求,关闭句柄等。您可以使用process._getActiveRequestsprocess._getActiveHandles来查看保持事件循环活动的内容。

你也可以通过调用OS apis突然中断节点线程,但这会泄漏大量垃圾直到你退出进程,所以你无法启动/重启节点很多次,然后你需要退出进程才能免费泄露的资源。