nodejs 里有锁的概念吗?比如扣库存这个场景,库存只有 1 了,两个用户同时请求,如何保证只有一个成功?
1
laoyur 2017-09-06 14:08:46 +08:00
你这个案例,为何不用数据库自己的锁机制呢
|
2
Srar 2017-09-06 14:10:48 +08:00
这个属于数据库原子性操作问题...和 NodeJS 无关, 如果是在 NodeJS 进程内处理并且是在一个事件内的话修改变量是原子操作
|
3
twogoods OP |
4
fds 2017-09-06 14:41:20 +08:00
你先搞清楚这个数据是存在哪里。数据库有锁、事务的概念。node.js 单进程不需要锁。多进程之间依赖外部服务处理同步问题。
|
6
domty 2017-09-06 16:15:19 +08:00
异步是相对于同步来说的。
锁这种东西是并发里用到的。 并发的线程竞争资源竞争用锁,和这个并发线程是同步实现的还是异步实现的没有区别。 |
7
TangMonk 2017-09-06 16:26:23 +08:00
1. 用数据库,比如说 PostgreSQL:
CREATE TABLE products ( price integer CHECK (price > 0) ); 2. 用 redis nodejs 有个包:async-lock |