比较列表时我的 node.js 会锁定吗?
Will my node.js lock up while comparing lists?
所以,基本上我在计划的 node.js 应用程序上有 2 个列表,其中一个来自数据库,另一个来自复制服务器上的文件名并将其存储在其中一个列表。
问题是:它们都有大约 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();
也许你应该看看 worker threads or cluster in order to make your Node.js application multi-threaded, or you could just execute another Node.js script in parallel with child process. Also, see this guide about the JavaScript event loop。
所以,基本上我在计划的 node.js 应用程序上有 2 个列表,其中一个来自数据库,另一个来自复制服务器上的文件名并将其存储在其中一个列表。
问题是:它们都有大约 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();
也许你应该看看 worker threads or cluster in order to make your Node.js application multi-threaded, or you could just execute another Node.js script in parallel with child process. Also, see this guide about the JavaScript event loop。