1.1.0 • Published 8 years ago

semaphore v1.1.0

Weekly downloads
195,080
License
-
Repository
github
Last release
8 years ago

semaphore.js

Build Status

Install: npm install semaphore

Limit simultaneous access to a resource.

// Create
var sem = require('semaphore')(capacity);

// Take
sem.take(fn[, n=1])
sem.take(n, fn)

// Leave
sem.leave([n])

// Available
sem.available([n])
// Limit concurrent db access
var sem = require('semaphore')(1);
var server = require('http').createServer(req, res) {
	sem.take(function() {
		expensive_database_operation(function(err, res) {
			sem.leave();

			if (err) return res.end("Error");

			return res.end(res);
		});
	});
});
// 2 clients at a time
var sem = require('semaphore')(2);
var server = require('http').createServer(req, res) {
	res.write("Then good day, madam!");

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

License

MIT

mispistachos-cli@victor.accarini/ravendb@infinitebrahmanuniverse/nolb-sema@everything-registry/sub-chunk-2730@uniqys/semaphore-asyncmitigationwanchainjs-blockchainweb3-provider-engineweb3-provider-engine-spvz-dockerinowehirewerkout-serverworker_utilswhorepresssusyweb-provider-enginetidalpromisevoluptatemipsavaporyjs-blockchainkafirchain-tetrishttp-mitm-proxyhttp-mitm-proxy-advhttp-mitm-proxy-patchhttp-mitm-proxy-wzsgicjs-blockchainicjs-mptimage-steamhomebridge-cubesensorshousecontrollerhomebridge-sengled-cocostaechomebridge-snug-smart-ventilatorhomebridge-venstariobroker.harmonyinventorenonlitllite.shlighthouse-orchestratorloadmill-http-mitm-proxymelted-nodematahari@wanwu/mitm-proxy@vaporyjs/merkle-patricia-tree@vaporyjs/node-blockchain-server@venly/web3-provider-engine@trufflesuite/web3-provider-engine@tsiry/web3-provider-engine@umaprotocol/web3-provider-engine@ulangi/sqlite-adapter@thismr/bitmindtest-core@tradle/web3-provider-engine@vapormask/web3-provider-engine@xswap/v2-core@tensor-hq/tensor-commonazure_qnamaker_binderalooma-netlify-cms@polkadot/trie-db-old@portis/web3-provider-engine@platonnetwork/web3-provider-engine@platonenterprise/web3-provider-enginegeepers@staticcms/core@staticcms/lite@sudophunk/fulido@synzen/discord-rest@talves/netlify-cms-backend-bitbucket@talves/netlify-cms-backend-github@talves/netlify-cms-backend-gitlab@talves/netlify-cms-coreecho-providerembed-appembark-web3-provider-engineescaped-serverelectron-http-mitm-proxyexercitationemvoluptatemethereumjs-dhtethereumjs-blockchainethereumjs-orbitdb-blockchaineverything_is_connected_engineestabether-tellerextinguisher@privdb/privdb@bohendo/connext@bjowes/http-mitm-proxy@bonsaiswap-lib/lib@bonsaiswapv3/core@bonsaiswapv3/deploy@celo/ganache-ethereum@chakra-swap/core@chouandy/web3-provider-engine@azure/cosmos@borealisswap/borealis-swap-libcae-pgkcfn-builderchewie-systemchinachu-upnp-serverchain-proxyccxwsccxws-clientccxws2choo-resource
1.1.0

8 years ago

1.0.5

10 years ago

1.0.4

10 years ago

1.0.3

10 years ago

1.0.2

11 years ago

1.0.1

13 years ago

1.0.0

14 years ago