xlock
a easy and useful lock for NodeJS
How to Install?
npm install xlock
How to Use?
Import it and use it, like this
import xlock = require("xlock");async function TestLock(){ // Lock await xlock.lock("test"); DoSomething(); // Unlock. NOTICE, ONE LOCK ONE UNLOCK, it must be match! xlock.unlock("test");}
API
/** * Wait a moment. * @param ms wait time. microsecond. */async function wait(ms: number);/** * Sleep a moment. Same as wait. * @param ms sleep time. microsecond. */async function sleep(ms: number);/** * Until test() return a true, otherwise wait. * @param test test function. */async function until(test: ()=>boolean): Promise<boolean>;/** * Lock * @param lock Lock Name * @param timeout Time. some time pass, if not get lock, it will be timeout and return false. default timeout disable. * @param mode Lock Mode. (Normal, Read, Write) */async function lock(name:string, timeout?:number, mode?: Mode):Promise<boolean>/** * Unlock * @param name Unlock Name */function unlock(name: string): void;/** * Check Lock. If unlock, return false. If lock, return true. * @param name Lock name * @param mode Lock Mode. (Normal, Read, Write) */function check(name: string, mode?:Mode): boolean;/** * Read Lock * @param name Lock Name * @param timeout see lock api */async function read_lock(name:string, timeout?:number):Promise<boolean>;/** * Read Unlock * @param name Unlock Name */function read_unlock(name: string): void;/** * Check ReadLock * @param name Lock Name */function check_read_lock(name:string): boolean;/** * Write Lock * @param name Lock Name * @param timeout see lock api */async function write_lock(name:string, timeout?:number):Promise<boolean>;/** * Write Unlock * @param name Unlock Name */function write_unlock(name: string): void;/** * Check WriteLock * @param name Lock Name */function check_write_lock(name:string): boolean; async function Lock(name: string, dofunc: ()=>void, timeout?:number, mode?: Mode):Promise<boolean>;async function ReadLock(name: string, dofunc: ()=>void, timeout?:number, mode?: Mode):Promise<boolean>;async function WriteLock(name: string, dofunc: ()=>void, timeout?:number, mode?: Mode):Promise<boolean>;
Sample
In /test dir, you will find sample and test.
Thank you for using. Enjoy it!
xlock
一个简单有用的锁
如何安装?
npm install xlock
如何使用?
引用它并使用它, 像这样
import xlock = require("xlock");async function TestLock(){ // 锁 await xlock.lock("test"); DoSomething(); // 解锁. 注意,一次锁,一次解锁,必须匹配。 xlock.unlock("test");}
API
/** * 等待一段时间。 * @param ms 等待时间。毫秒。 */async function wait(ms: number);/** * 睡眠一段时间。与wait功能相同。 * @param ms 睡眠时间. 毫秒. */async function sleep(ms: number);/** * 持续等待,直到test()返回true * @param test 测试函数. */async function until(test: ()=>boolean): Promise<boolean>;/** * 锁 * @param lock 锁名 * @param timeout 超时时间. 经过设置的时间,如果仍然无法获取锁,则超时并返回false。默认超时未禁用 * @param mode 锁模式。 (Normal 普通互斥锁, Read 读锁, Write 写锁) */async function lock(name:string, timeout?:number, mode?: Mode):Promise<boolean>/** * 解锁 * @param name 解锁的锁名 */function unlock(name: string): void;/** * 检查锁状态,如果上锁,返回true。如果未上锁,返回false。 * @param name 锁名 * @param mode 锁模式。 (Normal 普通互斥锁, Read 读锁, Write 写锁) */function check(name: string, mode?:Mode): boolean;/** * 读锁 * @param name 锁名 * @param timeout 参看lock */async function read_lock(name:string, timeout?:number):Promise<boolean>;/** * 读锁解锁 * @param name 解锁的锁名 */function read_unlock(name: string): void;/** * 检测读锁状态 * @param name 锁名 */function check_read_lock(name:string): boolean;/** * 写锁 * @param name 锁名 * @param timeout 参看lock */async function write_lock(name:string, timeout?:number):Promise<boolean>;/** * 写锁解锁 * @param name 解锁的锁名 */function write_unlock(name: string): void;/** * 检测写锁状态 * @param name 锁名 */function check_write_lock(name:string): boolean; async function Lock(name: string, dofunc: ()=>void, timeout?:number, mode?: Mode):Promise<boolean>;async function ReadLock(name: string, dofunc: ()=>void, timeout?:number, mode?: Mode):Promise<boolean>;async function WriteLock(name: string, dofunc: ()=>void, timeout?:number, mode?: Mode):Promise<boolean>;
例子
在test文件夹下,你可以找到例子。
感谢使用。希望你们喜欢!