比较列表时,我的node.js会锁定吗



所以,基本上,我在计划的node.js应用程序上有两个列表,其中一个来自数据库,另一个来自复制服务器上的文件名并将其存储在列表中。

问题是:它们都有大约750000个字符串,我需要在其中一个字符串中搜索另一个字符串。

我对node还很陌生,所以我想知道,在比较列表时,我的应用程序会不会将自己锁定给其他用户,因为它是单线程的?对我来说,比较两个这样的大列表似乎相当耗费cpu。

这取决于您如何比较列表以及如何构建应用程序,但通常是肯定的。例如,此代码将阻止执行:

server.on("request", (req, res)=>{
// This function will not be called while the comparasion is running.
// Requests will have to wait until the call stack empties (until nothing
// is running).
}
compareLists();

也许您应该查看工作线程或集群,以便使Node.js应用程序具有多线程性,或者您可以与子进程并行执行另一个Node.js脚本。另外,请参阅有关JavaScript事件循环的本指南。

最新更新