Bike shed mutex lock implementation in node.js
npm install mutexify
Hasn't this been done before? Yes, but the specific semantics of this made some of my code simpler.
var mutexify = require('mutexify')
var lock = mutexify()
lock(function(release) {
console.log('i am now locked')
setTimeout(function() {
release()
}, 1000)
})
lock(function(release) {
console.log('1 second later')
release()
})A common pattern is to call a callback after you release the lock.
To do this in a one-liner pass the callback and the value to release(cb, err, value)
var write = function(data, cb) {
lock(function(release) {
fs.writeFile('locked-file.txt', data, release.bind(null, cb))
})
}mutexify guarantees that the order that a mutex was requested in is the order that access will be given.
You can read the lock's current state on the lock.locked property.
MIT