Javascript 如何在node.js中编写线程安全代码
以下是我的app.js的一部分:Javascript 如何在node.js中编写线程安全代码,javascript,multithreading,node.js,Javascript,Multithreading,Node.js,以下是我的app.js的一部分: var connections = []; function removeConnection(res) { var i = connections.indexOf(res); if (i !== -1) { connections.splice(i, 1); } } 当请求关闭时,我调用removeConnection: req.on('close', function () { console.log("c
var connections = [];
function removeConnection(res) {
var i = connections.indexOf(res);
if (i !== -1) {
connections.splice(i, 1);
}
}
当请求关闭时,我调用removeConnection:
req.on('close', function () {
console.log("connection closed");
removeConnection(res);
});
我想知道上面的代码是否是线程安全的?我的意思是Node.js是事件驱动的,下面的场景可能吗
这会发生吗?如果是,那么我应该如何修复代码?Node.js的一个关键原则是所有用户代码都在一个线程中运行,这消除了开发人员编写线程安全代码的复杂性
因此,根据定义,您的代码(以及所有Node.js代码)是线程安全的。Node.js应用程序中只有一个线程,因此所有Node.js代码都是线程安全的。@JohnnyHK如果是这样,那么我会接受这个答案。这是未来可能改变的事情吗?另外,向运行nodejs的Web服务器添加更多的内核也没有任何帮助?如果您想利用更多的内核/处理器,可以手动使用或使用类似内置的内核。这并不意味着Node.js会消除竞争条件。单个JS线程所做的就是确保JS始终处于关键部分。@Davidermann确实如此。这意味着任何Node.js代码都将运行到完成,不会有任何中断的机会。调用异步方法时仍然可能出现竞争条件,但这是另一个问题。