首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在nodejs中,增量/减量操作是线程安全的吗?

在nodejs中,增量/减量操作是线程安全的吗?
EN

Stack Overflow用户
提问于 2019-01-31 20:52:08
回答 1查看 1.1K关注 0票数 1

我有一个简单的api,用户可以发送一些数据。数据是JSON对象数组。我的目标是知道api当前正在处理多少个对象。我创建了一个全局计数器,对于我收到的每个请求,我将对象的数量添加到该计数器中,当我处理完对象时,我从计数器中减去该数量。我的问题是,这种方法是线程安全的吗?这意味着,我可以有两个请求吗?一个请求刚刚完成处理,因此会发生扣减,另一个新请求是我将请求数添加到计数器中,类似于竞争条件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-31 23:09:14

如果您在一台服务器上运行一个应用程序,您应该不会注意到这一点。例如:

代码语言:javascript
运行
复制
const counter = 0

router.get("/", (req, res) => {
  counter++
  res.send({counter: counter})
})

即使在并发请求期间,计数器也会按预期对请求进行计数,因为Node是单线程的,Event Loop会关心它。但是,如果您有多个服务器,该方法将无法工作,因为全局变量存储在每个服务器的RAM中。在这种情况下,您应该有一些联合数据库,如Redis (它是一个键值数据库,它将数据存储在内存中,因此速度非常快)来存储您的计数器。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54461059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档