这是我的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是事件驱动的,下面的场景可能吗?
正如您在此场景中看到的那样,将删除threadC的连接而不是threadB的连接。
这可能发生吗?如果是,那我该如何修复代码?
答案 0 :(得分:5)
Node.js的一个关键原则是所有用户代码都在一个线程中运行,这使开发人员无需处理编写线程安全代码的复杂性。
因此,您的代码(以及所有Node.js代码)根据定义是线程安全的。