Class FixedThreadPool<Data, Response>

A thread pool with a fixed number of threads.

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 (view full)

Constructors

Properties

emitter?: EventEmitterAsyncResource

Pool event emitter integrated with async resource. 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. If the pool is dynamic with a minimum number of workers set to zero, this event is emitted when the pool is started.
  • 'busy': Emitted when the number of workers created in the pool has reached the maximum size expected and are executing concurrently their tasks quota.
  • 'busyEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer executing concurrently their tasks quota.
  • 'full': Emitted when the pool is dynamic and the number of workers created has reached the maximum size expected.
  • 'fullEnd': Emitted when the pool is dynamic and the number of workers created has no longer reached the maximum size expected.
  • 'empty': Emitted when the pool is dynamic with a minimum number of workers set to zero and the number of workers has reached the minimum 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 the number of workers created in the pool has reached the maximum size expected and are back pressured (i.e. their tasks queue is full: queue size >= maximum queue size).
  • 'backPressureEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer back pressured (i.e. their tasks queue is no longer full: queue size < maximum queue size).
filePath: string

Path to the worker file.

maximumNumberOfWorkers?: number

Maximum number of workers that this pool manages.

minimumNumberOfWorkers: number

Minimum number of workers that this pool manages.

opts: PoolOptions<Worker>

Options for the pool.

promiseResponseMap: Map<`${string}-${string}-${string}-${string}-${string}`, PromiseResponseWrapper<Response>> = ...

The task execution response promise map:

  • key: The message id of each submitted task.
  • value: An object that contains task's worker node key, execution response promise resolve and reject callbacks, async resource.

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

workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<Worker, Data, Response>

Worker choice strategies context referencing worker choice algorithms implementation.

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

Pool worker nodes.

Accessors

  • get backPressure(): boolean
  • Whether the pool is back pressured or not.

    Returns boolean

    The pool back pressure boolean status.

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

    Returns boolean

    The pool busyness boolean status.

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

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

    Returns "fixed" | "dynamic"

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

    Returns "cluster" | "thread"

Methods

  • Parameters

    • Optionaldata: Data

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

    • Optionalname: string

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

    • OptionaltransferList: readonly 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 with a task function response that will be fulfilled when the task is completed.

  • Parameters

    • data: Iterable<Data, any, any>

      The tasks iterable input data for the specified task function. This can only be an iterable of structured-cloneable data.

    • Optionalname: string

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

    • OptionaltransferList: readonly 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 with an array of task function responses that will be fulfilled when the tasks are completed.

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

    Parameters

    • workerNodeKey: number

      The worker node key.

    • message: MessageValue<Data, unknown>

      The message.

    • OptionaltransferList: readonly TransferListItem[]

      The optional array of transferable objects.

    Returns void

  • Parameters

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

    Returns void