nodejs之锁

q1871901600 发布于 2024-11-14 16 次阅读


在nodejs中没有默认提供的锁控制,那么在多进程的情况下,如何加锁控制并发问题呢?

答案是引入 async-lock 依赖

var AsyncLock = require('async-lock');
var lock = new AsyncLock();

/**
 * @param {String|Array} key 	resource key or keys to lock
 * @param {function} fn 	execute function
 * @param {function} cb 	(optional) callback function, otherwise will return a promise
 * @param {Object} opts 	(optional) options
 */
lock.acquire(key, function(done) {
	// async work
	done(err, ret);
}, function(err, ret) {
	// lock released
}, opts);

// Promise mode
lock.acquire(key, function() {
	// return value or promise
}, opts).then(function() {
	// lock released
});

参考文章:

async-lock - npm

一个会写python的Java工程师
最后更新于 2024-11-14