Class Monitor<RWLock>

Type Parameters

Hierarchy

  • Monitor

Implements

Constructors

  • Type Parameters

    Parameters

    • lockBox: LockBox<RWLock>
    • lockConstructor: (new () => RWLock)
        • new (): RWLock
        • Returns RWLock

    • Optional locksPending: Map<string, {
          count: number;
      }>

    Returns Monitor<RWLock>

Properties

_locks: Map<string, {
    status: "acquiring";
    type: "read" | "write";
} | {
    lock: RWLock;
    release: ResourceRelease;
    status: "acquired";
    type: "read" | "write";
}> = ...

Monitor specific lock map.

lockBox: LockBox<RWLock>

Global lock box. Must be shared between all monitors.

lockConstructor: (new () => RWLock)

Type declaration

    • new (): RWLock
    • Lock constructor to be used.

      Returns RWLock

locksPending?: Map<string, {
    count: number;
}>

Global pending locks map. Only used for deadlock detection.

Type declaration

  • count: number

Accessors

  • get count(): number
  • The monitor count is isolated to this monitor. Use the shared lock box if you want to know the global count.

    Returns number

  • get locks(): ReadonlyMap<string, {
        status: "acquiring";
        type: "read" | "write";
    } | {
        lock: RWLock;
        release: ResourceRelease;
        status: "acquired";
        type: "read" | "write";
    }>
  • Returns ReadonlyMap<string, {
        status: "acquiring";
        type: "read" | "write";
    } | {
        lock: RWLock;
        release: ResourceRelease;
        status: "acquired";
        type: "read" | "write";
    }>

Methods

  • Parameters

    • key: string
    • lockType: "read" | "write"

    Returns boolean

  • This checks if this monitor has locked the lock. Use the shared lock box if you want to know if it is globally locked.

    Parameters

    • Optional key: string
    • Optional type: "read" | "write"

    Returns boolean

  • Parameters

    • key: string
    • lockType: "read" | "write"

    Returns [string, {
        count: number;
    }]

  • Unlock a sequence of lock keys. Unlocking will be done in the order of the keys. Unlocking can only be done for the keys locked by this monitor. Unlocking the same keys is idempotent.

    Parameters

    • Rest ...keys: string[]

    Returns Promise<void>

  • Parameters

    • lockPendingKey: string
    • lockPending: {
          count: number;
      }
      • count: number

    Returns void

  • This waits for a lock in this specific monitor. Use the shared lock box if you want globally wait for unlock.

    Parameters

    Returns PromiseCancellable<void>

  • Type Parameters

    • T

    • TReturn

    • TNext

    Parameters

    • Rest ...params: [...(string | RWLockRequest)[], ((monitor) => AsyncGenerator<T, TReturn, TNext>)] | [...(string | RWLockRequest)[], Partial<ContextTimedInput>, ((monitor) => AsyncGenerator<T, TReturn, TNext>)] | [undefined | Partial<ContextTimedInput>, ((monitor) => AsyncGenerator<T, TReturn, TNext>)]

    Returns AsyncGenerator<T, TReturn, TNext>

Generated using TypeDoc