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-blockchain@configurator/ravendb@cypherium/web3-provider-engine@cyberhorsey/web3-provider-engine@cypress/core-https-proxy@bohendo/connext@borealisswap/borealis-swap-lib@rrpm/netlify-cms-backend-bitbucket@rrpm/netlify-cms-backend-github@rrpm/netlify-cms-backend-gitlab@rrpm/netlify-cms-corekafirchain-tetrissquarelink-provider-enginesophonjs-blockchainsops-http-mitm-proxytsx17tjbottjbotczlibtjbotlib-jltjbotlib4noderedterrible-jsontor-web3-provider-engine@aolchik/netlify-cms-core@astrocoders/netlify-cms@arkane-network/web3-provider-engine@arkecosystem/core-api@ahfarmer/http-mitm-proxy@afria/afria-libraries@alayanetwork/web3-provider-engine@azure/cosmos@bjowes/http-mitm-proxy@celo/ganache-ethereum@chouandy/web3-provider-engine@chakra-swap/core@bonsaiswap-lib/lib@bonsaiswapv3/core@bonsaiswapv3/deploy@deconet/web3-provider-engine@dblk/yamp@dexon-foundation/web3-provider-enginexpl-apixpl-dbclientxpl-soundwebu-provider-enginezoib@forgettingpasswords/netlify-cms-backend-bitbucket@forgettingpasswords/netlify-cms-backend-github@forgettingpasswords/netlify-cms-backend-gitlab@forgettingpasswords/netlify-cms-core@igloo-be/netlify-cms-backend-bitbucket@igloo-be/netlify-cms-backend-github@igloo-be/netlify-cms-backend-gitlab@igloo-be/netlify-cms-core@ganache/ethereum@eliteswap/v2-core@getsafle/safle-web3-engine@giveth/bridge@gislik/web3-provider-engine@innoswap/core@kyoung18/netlify-cms-core@lbatchelor/netlify@litedexdev/litedex-core-swap@michael1011/web3-provider-engine@materia-dex/materia-contracts-proxy@encrypt-s/netlify-cms@mmkale/netlify-cms-core@mirena/http-mitm-proxy@jairlizarraga/tjbotlib@kodinghandle/bullswap-lib@juicemx/web3-provider-engine@igniswap/igni-swap-lib@olympfin/olymp-swap-lib@privdb/privdb@portis/web3-provider-engine@rainblock/merkle-patricia-tree@rndlabs/monsi@platonenterprise/web3-provider-engine@platonnetwork/web3-provider-engine@polkadot/trie-db-old@smartholdem/core-api@soloseng/ganache-ethereum@spankchain/connext-client@shyftnetwork/shyft_ethereumjs-blockchain
1.1.0

8 years ago

1.0.5

9 years ago

1.0.4

9 years ago

1.0.3

10 years ago

1.0.2

10 years ago

1.0.1

13 years ago

1.0.0

13 years ago