wasm-metering
Version:
injects metering into webassembly binaries
30 lines (23 loc) • 503 B
JavaScript
var mutexify = function() {
var queue = []
var used = null
var call = function () {
used(release)
}
var acquire = function (fn) {
if (used) return queue.push(fn)
used = fn
acquire.locked = true
process.nextTick(call)
return 0
}
acquire.locked = false
var release = function (fn, err, value) {
used = null
acquire.locked = false
if (queue.length) acquire(queue.shift())
if (fn) fn(err, value)
}
return acquire
}
module.exports = mutexify