Node进程互斥锁,lockman,进程锁
这是我在网上找到的一个node模块,用在thinkjs开发框架中的多进程项目中的工作进程中,失败。表现是,在locker.acquire的回调函数中使用console.log(‘…’),有时不打印,有时会打印几百上千条,没搞明白,也许是与作者的开发环境有差异?也许是年代久远(2017-01-07最后一次更新)?
不知不知……
介绍
lockman 是一个用于多进程的「互斥锁」, 类似一些语言中(比如 C#)的 lock 关键字可以用来确保代码块完成运行,而不会被其他进程「影响」。
它可以把一段代码定义为「互斥段」(critical section),「互斥段」在一个时刻内只允许一个进程进入执行,
而其他进程必须等待。
不同之处,C# 的 lock 关键字作用在「线程间」,lockman 作用在 Node 的进程间。
安装
0 |
$ npm install lockman --save |
示例
0 1 2 3 4 5 6 7 |
const Locker = require('lockman'); let locker = new Locker('demo'); locker.acquire(function(){ //此处代码在同一时刻只允许一个进程进入执行 locker.release(); }); |
Git Repo: https://github.com/Houfeng/lockman