From d25e11bee6ca5ca523884da132d18e1400e077b9 Mon Sep 17 00:00:00 2001 From: Minteck Date: Tue, 24 Aug 2021 14:41:48 +0200 Subject: Initial commit --- node_modules/@calebboyd/semaphore/README.md | 35 +++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 node_modules/@calebboyd/semaphore/README.md (limited to 'node_modules/@calebboyd/semaphore/README.md') diff --git a/node_modules/@calebboyd/semaphore/README.md b/node_modules/@calebboyd/semaphore/README.md new file mode 100644 index 0000000..cdee8bf --- /dev/null +++ b/node_modules/@calebboyd/semaphore/README.md @@ -0,0 +1,35 @@ +## Semaphore + +Naive resource management / concurrency primitive + +`npm i @calebboyd/semaphore` + +### Example +```javascript +import { Semaphore } from '@calebboyd/semaphore' +import { something } from './somewhere' + +function doSomeWork () { + const lock = new Semaphore(10) + while(something.isTrue) { + lock.acquire().then(x => () => { + something.work().then(lock.release) + }) + } +} +``` +The semaphore will only allow 10 locks to be aquired at a time. This limits the concurrency of the asyncronous function `something.work` to 10 + +#### API: + +```typescript +export class Semaphore { + constructor (count: number) {} + acquire(): Promise + release(): void +} +``` + +## License + +MIT -- cgit