Node.js 节点杀死线程但不杀死进程

Node.js 节点杀死线程但不杀死进程,node.js,multithreading,terminate,Node.js,Multithreading,Terminate,我想知道您是否可以只终止执行节点应用程序的线程,而不终止进程 现在,我知道这听起来很奇怪,因为节点是单线程的,但我正在开发一个承载节点进程的.NET应用程序。当我使用process.exit()终止节点时,整个应用程序都会关闭,这是我不想要的行为。我只想终止节点线程 老实说,我非常绝望,我甚至尝试过,在创建节点正在执行的线程之前获取所有应用程序线程的列表,然后在创建之后获取另一个列表,然后删除启动节点之前存在的所有线程,保留对剩余线程的引用,认为它就是节点线程。正如你所料,结果并不是那么好 我正

我想知道您是否可以只终止执行节点应用程序的线程,而不终止进程

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

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

我正在使用EdgeJS来承载节点,如果这有什么不同的话。不幸的是,它没有一个内置的终止自身的功能

哦,而且由于某种原因,
server.close()
对我不起作用

我正在用我的节点代码托管一个视频流服务器,如果这些信息能对您有所帮助的话


提前谢谢你的帮助

节点线程需要通过清除事件循环上运行的所有内容进行协作,然后通过返回自然终止。因此,只需停止侦听请求,关闭句柄等。您可以使用
process.\u getActiveRequests
process.\u getActiveHandles
查看是什么使事件循环保持活动状态


您也可以通过调用操作系统API突然中断节点线程,但这将泄漏大量垃圾,直到您退出该进程,因此您无法在需要退出该进程以释放泄漏的资源之前多次启动/重新启动节点。

您“耍花招”的原因是什么不起作用的原因是看起来您正在运行node.js进程中。也就是说,一点也不在线程中。因此,除了您的.NET应用程序之外,没有运行node.js的线程。EdgeJS库(位于.NET中)创建了一个单独的线程来运行其中的节点代码。您确定吗?我快速查看了文档,没有看到任何地方提到它。我使用了一个简单的方法来测试它。我在托管代码中启动了一个新线程,它只执行我的.net代码,该代码启动EdgeJS并执行node.js代码。我关闭了那个线程,我的节点服务器仍然处于活动状态。所以我认为一定有新的线索在起作用,因为这是唯一可能发生的方式。不是100%确定,但非常确定这是一个新线程。我曾尝试通过OS API关闭该线程,但无法确定/引用该线程。关于
进程的任何文档。_getActiveRequests()
进程。_getActiveHandles()
,因为它们似乎不在官方api文档中?