🚦js-semaphore - Syncronization Using Promises
If your need is simple and a small mechanism with just 1 shared resource, you can use
js-semaphore as a Mutex too!
The source code comprehends the full Semaphore implementation with some basics tests and some applications. Actually, we have:
- 🤔🍜 Philosophers Dinner
- Why the tests take so long to complete?
As this is a Semaphore implementation, the tests are based in time and waiting for a specific resource to continue the execution. We emulate this as a test in order to validate the correct behavior of the lib.
- Why implement a Semaphore? Using Promises?
As a common solver for deadlocks avoidance, we found an util lib to create and test! The Promises usage is just a matter of asynchronous need.
js-semaphore is available with npm/yarn:
$ npm install @codevor/js-semaphore --save$ yarn add @codevor/js-semaphore
;// Semaphore with 1 resource = Mutexconst semaphore = ;// Semaphore with 1 resource, starting at 0 valueconst semaphore = ;// Semaphore with 3 resourcesconst semaphore = ;// acquire the semaphoresemaphore;
const Semaphore = Semaphore;// Semaphore with 1 resource = Mutexconst semaphore = ;// Semaphore with 1 resource, starting at 0 valueconst semaphore = ;// Semaphore with 3 resourcesconst semaphore = ;// acquire the semaphoresemaphore;
If you want, you can control the timeout. We hardly suggest not let this below
0.2s, but you can try if you want.
;// creates the Semaphoreconst semaphore = ;// get the actual Timespanconst actualTimespan = ;// set the actual Timespan, in seconds;// acquire the semaphoresemaphore;
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
Bugs and Sugestions
Report bugs or do suggestions using the issues.