Skip to content

Instantly share code, notes, and snippets.

@oivoodoo
Created December 28, 2011 12:05
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save oivoodoo/1527737 to your computer and use it in GitHub Desktop.
Save oivoodoo/1527737 to your computer and use it in GitHub Desktop.
mutex
var Mutex = function() {
this.queues = [];
this.locked = false;
};
Mutex.prototype = {
push: function(callback) {
var self = this;
this.queues.push(callback);
if (!this.locked) {
this.locked = true;
var f = this.queues.pop();
try {
f(function() {
self.locked = false;
});
} catch(ex) {
self.locked = false;
}
}
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment