X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=docs%2Fclasses%2FDynamicThreadPool.html;h=71b0b952572a795914497896d7f1fca6009a757d;hb=3fec62b0785f8819bbf9d87ab7b8cf9097f552a7;hp=4909a7adcd64fe3c3d0f6d4dde62e0b74fc644a4;hpb=0163b91de7e67e0c3b29b542bd2d47cce655b262;p=poolifier.git diff --git a/docs/classes/DynamicThreadPool.html b/docs/classes/DynamicThreadPool.html index 4909a7ad..71b0b952 100644 --- a/docs/classes/DynamicThreadPool.html +++ b/docs/classes/DynamicThreadPool.html @@ -1,677 +1,182 @@ -DynamicThreadPool | poolifier
-
- -
-
-
-
- -

Class DynamicThreadPool<Data, Response>

-
-

A thread pool with a dynamic number of threads, but a guaranteed minimum number of threads.

+DynamicThreadPool | poolifier - v3.0.6

Class DynamicThreadPool<Data, Response>

A thread pool with a dynamic number of threads, but a guaranteed minimum number of threads.

This thread pool creates new threads when the others are busy, up to the maximum number of threads. -When the maximum number of threads is reached, an event is emitted. If you want to listen to this event, use the pool's emitter.

- -

Author

Alessandro Pio Ardizio

- -

Since

0.0.1

-
-
-

Type Parameters

-
    -
  • -

    Data = unknown

    -

    Type of data sent to the worker. This can only be serializable data.

    -
  • -
  • -

    Response = unknown

    -

    Type of response of execution. This can only be serializable data.

    -
-
-

Hierarchy

-
-
-
-
- -
-
-

Constructors

-
- -
-
-

Properties

-
- -
emitter?: PoolEmitter
-
-

Inherit Doc

-
- -
filePath: string
-
- -
max: number
-
- -
nextMessageId: number = 0
-

Id of the next message.

-
-
- -
numberOfWorkers: number
-
- -
-
- -
promiseMap: Map<number, PromiseWorkerResponseWrapper<ThreadWorkerWithMessageChannel, Response>> = ...
-

The promise map.

-
    -
  • key: This is the message Id of each submitted task.
  • -
  • value: An object that contains the worker, the resolve function and the reject function.
  • +When the maximum number of threads is reached and workers are busy, an event is emitted. If you want to listen to this event, use the pool's emitter.

    +

Author

Alessandro Pio Ardizio

+

Since

0.0.1

+

Type Parameters

  • Data = unknown

    Type of data sent to the worker. This can only be structured-cloneable data.

    +
  • Response = unknown

    Type of execution response. This can only be structured-cloneable data.

    +

Hierarchy

Constructors

  • Constructs a new poolifier dynamic thread pool.

    +

    Type Parameters

    • Data = unknown

    • Response = unknown

    Parameters

    • min: number

      Minimum number of threads which are always active.

      +
    • max: number

      Maximum number of threads that can be created by this pool.

      +
    • filePath: string

      Path to an implementation of a ThreadWorker file, which can be relative or absolute.

      +
    • opts: ThreadPoolOptions = {}

      Options for this dynamic thread pool.

      +

    Returns DynamicThreadPool<Data, Response>

Properties

emitter?: EventEmitterAsyncResource

Event emitter integrated with async resource on which events can be listened to. +The async tracking tooling identifier is poolifier:<PoolType>-<WorkerType>-pool.

+

Events that can currently be listened to:

+
    +
  • 'ready': Emitted when the number of workers created in the pool has reached the minimum size expected and are ready.
  • +
  • 'busy': Emitted when the number of workers created in the pool has reached the maximum size expected and are executing concurrently their tasks quota.
  • +
  • 'full': Emitted when the pool is dynamic and the number of workers created has reached the maximum size expected.
  • +
  • 'destroy': Emitted when the pool is destroyed.
  • +
  • 'error': Emitted when an uncaught error occurs.
  • +
  • 'taskError': Emitted when an error occurs while executing a task.
  • +
  • 'backPressure': Emitted when all worker nodes have back pressure (i.e. their tasks queue is full: queue size >= maximum queue size).
-

When we receive a message from the worker we get a map entry and resolve/reject the promise based on the message.

-
-
- -
workerChoiceStrategyContext: WorkerChoiceStrategyContext<ThreadWorkerWithMessageChannel, Data, Response>
-

Worker choice strategy instance implementing the worker choice algorithm.

-

Default to a strategy implementing a round robin algorithm.

-
-
- - -
-

Inherit Doc

-
- -
workersTasksUsage: Map<ThreadWorkerWithMessageChannel, TasksUsage> = ...
-
-

Inherit Doc

-
-

Accessors

-
- -
-
- -
    -
  • get numberOfRunningTasks(): number
  • -
  • -
    -

    Inherit Doc

    -

    Returns number

-
- -
-
-

Methods

-
- -
filePath: string

Path to the worker file.

+
max: number

Maximum number of threads that can be created by this pool.

+
numberOfWorkers: number

Number of workers that this pool should manage.

+

Options for this fixed thread pool.

+
promiseResponseMap: Map<string, PromiseResponseWrapper<Response>> = ...

The task execution response promise map:

+
    +
  • key: The message id of each submitted task.
  • +
  • value: An object that contains the worker, the execution response promise resolve and reject callbacks.
  • +
+

When we receive a message from the worker, we get a map entry with the promise resolve/reject bound to the message id.

+
workerChoiceStrategyContext: WorkerChoiceStrategyContext<Worker, Data, Response>

Worker choice strategy context referencing a worker choice algorithm implementation.

+
workerNodes: IWorkerNode<Worker, Data>[] = []

Pool worker nodes.

+

Accessors

  • get busy(): boolean
  • Whether the pool is busy or not.

    +

    The pool busyness boolean status.

    +

    Returns boolean

  • get full(): boolean
  • Whether the pool is full or not.

    +

    The pool filling boolean status.

    +

    Returns boolean

  • get type(): "fixed" | "dynamic"
  • The pool type.

    +

    If it is 'dynamic', it provides the max property.

    +

    Returns "fixed" | "dynamic"

  • get utilization(): number
  • The approximate pool utilization.

    +

    Returns number

    The pool utilization.

    +
  • get worker(): "thread" | "cluster"
  • The worker type.

    +

    Returns "thread" | "cluster"

Methods

-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
    - -
  • -
    -

    Inherit Doc

    -
    -

    Parameters

    -
      -
    • -
      workerChoiceStrategy: "ROUND_ROBIN" | "LESS_RECENTLY_USED" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN"
    -

    Returns void

-
- -
-
- -
    - -
  • -

    This function is the listener registered for each worker.

    - -

    Returns

    The listener function to execute when a message is received from a worker.

    -
    -

    Returns ((message: MessageValue<Response, unknown>) => void)

    -
      -
    • -
        -
      • (message: MessageValue<Response, unknown>): void
      • -
      • -

        This function is the listener registered for each worker.

        - -

        Returns

        The listener function to execute when a message is received from a worker.

        -
        -
        -

        Parameters

        -
          -
        • -
          message: MessageValue<Response, unknown>
        -

        Returns void

-
-
-

Generated using TypeDoc

-
\ No newline at end of file +

Parameters

  • workerNodeKey: number

    The newly created worker node key.

    +

Returns void

  • Deregisters a listener callback on the worker given its worker node key.

    +

    Type Parameters

    • Message

    Parameters

    • workerNodeKey: number

      The worker node key.

      +
    • listener: ((message) => void)

      The message listener callback.

      +
        • (message): void
        • Parameters

          Returns void

    Returns void

  • Executes the specified function in the worker constructor with the task data input parameter.

    +

    Parameters

    • Optional data: Data

      The optional task input data for the specified task function. This can only be structured-cloneable data.

      +
    • Optional name: string

      The optional name of the task function to execute. If not specified, the default task function will be executed.

      +
    • Optional transferList: TransferListItem[]

      An optional array of transferable objects to transfer ownership of. Ownership of the transferred objects is given to the chosen pool's worker_threads worker and they should not be used in the main thread afterwards.

      +

    Returns Promise<Response>

    Promise that will be fulfilled when the task is completed.

    +
  • Internal

    Whether the worker node has back pressure (i.e. its tasks queue is full).

    +

    Parameters

    • workerNodeKey: number

      The worker node key.

      +

    Returns boolean

    true if the worker node has back pressure, false otherwise.

    +
  • Registers once a listener callback on the worker given its worker node key.

    +

    Type Parameters

    • Message

    Parameters

    • workerNodeKey: number

      The worker node key.

      +
    • listener: ((message) => void)

      The message listener callback.

      +
        • (message): void
        • Parameters

          Returns void

    Returns void

  • Registers a listener callback on the worker given its worker node key.

    +

    Type Parameters

    • Message

    Parameters

    • workerNodeKey: number

      The worker node key.

      +
    • listener: ((message) => void)

      The message listener callback.

      +
        • (message): void
        • Parameters

          Returns void

    Returns void

  • Sends a message to worker given its worker node key.

    +

    Parameters

    • workerNodeKey: number

      The worker node key.

      +
    • message: MessageValue<Data, unknown>

      The message.

      +
    • Optional transferList: TransferListItem[]

      The optional array of transferable objects.

      +

    Returns void

  • Sets the worker choice strategy in this pool.

    +

    Parameters

    • workerChoiceStrategy: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"

      The worker choice strategy.

      +
    • Optional workerChoiceStrategyOptions: WorkerChoiceStrategyOptions

      The worker choice strategy options.

      +

    Returns void

Generated using TypeDoc

\ No newline at end of file