【发布时间】:2021-04-29 16:21:37
【问题描述】:
我有一些 C++ 代码编写为 NodeJS 本机模块。初始化所有内容的函数会打开一些具有无限 while 循环的线程,这些线程需要一直运行到程序关闭。在命令行中一切正常,但是当我在电子中调用该函数时,它挂起。有什么方法可以从不阻塞的电子调用 C++?
我认为主要问题是,除非应用退出,否则初始化函数永远不会返回,这会使电子感到愤怒(没有错字)。
【问题讨论】:
-
In command line everything works just fine并不意味着代码在逻辑上是正确的。它可能只在这种情况下工作,但您的线程相关代码中仍然可能存在错误/错误假设,这将导致死锁或类似情况。 -
我已经在一个独立的 C++ 程序中测试了线程代码。我只做了一些修改,以便可以从 Node 应用程序调用它。
-
您添加的段落是重要信息。如果您从 JavaScript 调用 C++ 并且该 C++ 函数没有返回(阻塞直到线程完成),那么这确实会导致电子冻结。该函数必须返回,并且您的线程必须在后台运行。
-
那么有没有办法启动线程,让函数返回?我目前正在使用 Thread.join()
标签: c++ node.js electron node-modules