Socket
Socket
Sign inDemoInstall

mutexify

Package Overview
Dependencies
1
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    mutexify

mutex lock for javascript


Version published
Weekly downloads
81K
decreased by-2.02%
Maintainers
1
Install size
10.0 kB
Created
Weekly downloads
 

Readme

Source

mutexify

Bike shed mutex lock implementation in node.js

npm install mutexify

build status

Hasn't this been done before? Yes, but the specific semantics of this made some of my code simpler.

Usage

var mutexify = require('mutexify')
var lock = mutexify()

lock(function(release) {
  console.log('i am now locked')
  setTimeout(function() {
    release()
  }, 1000)
})

lock(function(release) {
  console.log('1 second later')
  release()
})

A common pattern is to call a callback after you release the lock. To do this in a one-liner pass the callback and the value to release(cb, err, value)

var write = function(data, cb) {
  lock(function(release) {
    fs.writeFile('locked-file.txt', data, release.bind(null, cb))
  })
}

mutexify guarantees that the order that a mutex was requested in is the order that access will be given.

You can read the lock's current state on the lock.locked property.

Usage with promises

mutexify provides a Promise-based alternative.

const mutexify = require('mutexify/promise')

;(async () => {
  var lock = mutexify()

  var release = await lock()
  console.log('i am now locked')
  setTimeout(function () {
    release()
  }, 1000)

  release = await lock()
  console.log('1 second later')
  release()
})()

License

MIT

Keywords

FAQs

Last updated on 29 Nov 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc