nodejs中的单进程异步锁,node异步锁,async-lock
为什么是async-lock?
因为我见其下载量比较大(在我发现的所有类似库中是最大的)且最近更新时间较近。
场景
- 在异步函数中,由于存在异步操作,对此函数的A,B两次执行会出现结束次序不可控。即A先执行,却比B后退出函数。
- 对于数据库的操作,有时会将select的值进行一系列业务变化后重新update至数据库。就比如简单的计数器,0开始计数,假设由于业务原因,
必须在代码中进行+1操作。则A读取数据库进入异步执行,此时B也开始执行读取数据库的代码,最终后造成两次执行后计数器只加了1。
此时便需要锁机制,类似于Java中的synchronized
或者lock
。执行同一段代码时,添加相同的key,则发现此key正在使用,则直接放入此key的待执行数组。 Continue reading