这是我的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("connection closed");
removeConnection(res);
});
我想知道上面的代码是否是线程安全的吗?我的意思是,由于Node.js是事件驱动的,因此以下情况可能吗?
如您在这种情况下所看到的,线程C的连接将被删除,而不是线程B的连接。
这会发生吗?如果是,那我应该如何修复代码?
最佳答案
Node.js的主要原则之一是所有用户代码都在单个线程中运行,这使开发人员无需处理编写线程安全代码的复杂性。
因此,根据定义,您的代码(以及所有Node.js代码)是线程安全的。