Sha256: 62565f366b445154491558c658f69a7c50b60f98f9d8581ff68c3ddab24ae3af
Contents?: true
Size: 567 Bytes
Versions: 3
Compression:
Stored size: 567 Bytes
Contents
/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; class Semaphore { constructor(available) { this.available = available; this.waiters = []; } acquire(callback) { if(this.available > 0) { this.available--; callback(); } else { this.waiters.push(callback); } } release() { if(this.waiters.length > 0) { const callback = this.waiters.pop(); process.nextTick(callback); } else { this.available++; } } } module.exports = Semaphore;
Version data entries
3 entries across 3 versions & 2 rubygems