read-write-lock

1.0.6 • Public • Published

read-write-lock

Build Status

  • a write lock prevents all other writes or reads
  • a read lock only prevents writes

Based on mutexify!

Algorithm

Write lock requests get put on the queue and handed out in order.

Read lock requests get put on the queue too - but when one read lock is given, all read requests in the queue go at once - once they all come back, it's on to the next lock request in the queue.

Usage

var createMutex = require('read-write-lock')
 
var mutex = createMutex()
 
mutex.writeLock(function(release) {
    // lol I've got a write lock which means that nobody else can do anything
 
    setTimeout(release, 200)
})
 
mutex.readLock(function(release) {
    // I've got a read lock at the same time as the function below!
    setTimeout(release, 100)
})
 
mutex.readLock(function(release) {
    // I've got a read lock at the same time as the function above!
    setTimeout(release, 200)
})

License

WTFPL

Package Sidebar

Install

npm i read-write-lock

Weekly Downloads

50

Version

1.0.6

License

WTFPL

Last publish

Collaborators

  • tehshrike