【发布时间】:2015-03-22 09:58:20
【问题描述】:
我想知道你是否可以只终止节点应用程序正在执行的线程而不是进程。
现在,我知道这听起来很奇怪,因为节点是单线程的,但我正在开发一个在进程中托管节点的 .NET 应用程序。当我用process.exit() 终止节点时,整个应用程序都会关闭,这是我不想要的行为。我只想终止节点线程。
老实说,我非常绝望,我什至尝试过,在创建节点正在执行的线程之前获取所有应用程序线程的列表,然后在创建之后获取另一个列表,然后删除在启动节点之前存在的所有线程,保持对剩余线程的引用,认为它是节点线程。正如你所料,结果并不那么好。
我正在使用 EdgeJS 来托管节点,如果这有什么不同的话。不幸的是,它没有内置的功能来终止自身。
哦,由于某种原因,server.close() 对我不起作用。
如果该信息对您有任何帮助,我将在我的节点代码中托管一个视频流服务器。
提前感谢所有帮助!
【问题讨论】:
-
你“欺骗”不起作用的原因是它看起来像你正在运行你的 node.js 进程。也就是说,根本不在线程中。因此,除了您的 .NET 应用程序之外,运行 node.js 的线程完全为零。
-
EdgeJS 库(在 .NET 中)创建了一个单独的线程来运行其中的节点代码。
-
你确定吗?我快速浏览了文档,并没有在任何地方看到它。
-
我用了一个简单的方法来测试这个。我在托管代码中启动了一个新线程,它只执行我的 .net 代码,它启动 EdgeJS 并执行 node.js 代码。我关闭了那个线程,我的节点服务器还活着。所以我认为必须有一个新的线索在起作用,因为这是唯一可能发生的方式。不是 100% 确定,但很确定这是一个新线程。
标签: node.js multithreading terminate