xlock
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

xlock

a easy and useful lock for NodeJS

npm

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

如何安装?

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文件夹下,你可以找到例子。

感谢使用。希望你们喜欢!

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.0.1
    0
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 1.0.1
    0
  • 1.0.0
    0

Package Sidebar

Install

npm i xlock

Weekly Downloads

0

Version

1.0.1

License

Apache-2.0

Unpacked Size

27 kB

Total Files

11

Last publish

Collaborators

  • xerysherry