Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Socket
Sign inDemoInstall

semaphore

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

semaphore - npm Package Compare versions

Comparing version 1.0.0 to 1.0.1

5

lib/semaphore.js

@@ -20,2 +20,5 @@ var util = require('util');

var task = item.task;
item.task = function() { task(semaphore.leave); };
if (semaphore.current + item.n > semaphore.capacity) {

@@ -26,3 +29,3 @@ return semaphore.queue.push(item);

semaphore.current += item.n;
item.task();
item.task(semaphore.leave);
},

@@ -29,0 +32,0 @@

2

package.json
{
"name": "semaphore",
"version": "1.0.0",
"version": "1.0.1",
"description": "semaphore for node",

@@ -5,0 +5,0 @@ "engine": "node >= 0.6.0",

semaphore.js
============
Install:
npm install semaphore
Limit simultaneous access to a resource.
```javascript
// Create semaphore
// Create
var sem = require('semaphore')(capacity);
// Take semaphore
sem.take(function[, number])
sem.take(number, function)
// Take
sem.take(fn[, n=1])
sem.take(n, fn)
// Leave semaphore
sem.leave([number])
// Leave
sem.leave([n])
```

@@ -20,7 +23,3 @@

```javascript
// Prevent database from dying by only allowing 1 request at a time
var cat = {
};
// Limit concurrent db access
var sem = require('semaphore')(1);

@@ -41,3 +40,3 @@ var server = require('http').createServer(req, res) {

```javascript
// Only serve 2 clients at a time.
// 2 clients at a time
var sem = require('semaphore')(2);

@@ -49,4 +48,17 @@ var server = require('http').createServer(req, res) {

res.end("We hope to see you soon for tea.");
sem.leave();
});
});
```
```javascript
// Rate limit
var sem = require('semaphore')(10);
var server = require('http').createServer(req, res) {
sem.take(function() {
res.end(".");
setTimeout(sem.leave, 500)
});
});
```

@@ -103,3 +103,3 @@ var should = require('should');

s.take(function() { values.push(2); setTimeout(function() { s.leave(); }, speed * 2); });
s.take(function() { values.push(3); setTimeout(function() { s.leave(); }, speed * 3); });
s.take(function(leave) { values.push(3); setTimeout(function() { leave(); }, speed * 3); });
s.take(function() { values.push(4); });

@@ -158,5 +158,5 @@ s.take(function() { values.push(5); });

s.take(5, function() { // 5
s.take(5, function(leave) { // 5
s.take(4, function() { // 1
s.leave(4); // 5
leave(4); // 5

@@ -163,0 +163,0 @@ s.take(5, done); // 0

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc