repositories
/
poolifier.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into combined-prs-branch
[poolifier.git]
/
src
/
pools
/
worker.ts
diff --git
a/src/pools/worker.ts
b/src/pools/worker.ts
index 1a9973ba8a8ba53bcb9aedb59f4ac246d2e4045e..c1af1cf79c99d05e7c803e7d072529301b6d678a 100644
(file)
--- a/
src/pools/worker.ts
+++ b/
src/pools/worker.ts
@@
-1,7
+1,7
@@
import type { EventEmitter } from 'node:events'
import type { MessageChannel, WorkerOptions } from 'node:worker_threads'
import type { EventEmitter } from 'node:events'
import type { MessageChannel, WorkerOptions } from 'node:worker_threads'
-import type { Circular
Array } from '../circular-array
.js'
+import type { Circular
Buffer } from '../circular-buffer
.js'
import type { Task, TaskFunctionProperties } from '../utility-types.js'
/**
import type { Task, TaskFunctionProperties } from '../utility-types.js'
/**
@@
-52,6
+52,11
@@
export type EventHandler<Worker extends IWorker> =
| ErrorHandler<Worker>
| ExitHandler<Worker>
| ErrorHandler<Worker>
| ExitHandler<Worker>
+/**
+ * Measurement history size.
+ */
+export const MeasurementHistorySize = 386
+
/**
* Measurement statistics.
*
/**
* Measurement statistics.
*
@@
-81,7
+86,7
@@
export interface MeasurementStatistics {
/**
* Measurement history.
*/
/**
* Measurement history.
*/
- readonly history: Circular
Array<number>
+ readonly history: Circular
Buffer
}
/**
}
/**
@@
-172,6
+177,11
@@
export interface WorkerInfo {
* This flag is set to `true` when worker node is stealing tasks from another worker node.
*/
stealing: boolean
* This flag is set to `true` when worker node is stealing tasks from another worker node.
*/
stealing: boolean
+ /**
+ * Back pressure flag.
+ * This flag is set to `true` when worker node tasks queue has back pressure.
+ */
+ backPressure: boolean
/**
* Task functions properties.
*/
/**
* Task functions properties.
*/
@@
-268,6
+278,7
@@
export interface WorkerNodeOptions {
env?: Record<string, unknown>
tasksQueueBackPressureSize: number | undefined
tasksQueueBucketSize: number | undefined
env?: Record<string, unknown>
tasksQueueBackPressureSize: number | undefined
tasksQueueBucketSize: number | undefined
+ tasksQueuePriority: boolean | undefined
}
/**
}
/**
@@
-305,6
+316,12
@@
export interface IWorkerNode<Worker extends IWorker, Data = unknown>
* This is the number of tasks that can be enqueued before the worker node has back pressure.
*/
tasksQueueBackPressureSize: number
* This is the number of tasks that can be enqueued before the worker node has back pressure.
*/
tasksQueueBackPressureSize: number
+ /**
+ * Sets tasks queue priority.
+ *
+ * @param enablePriority - Whether to enable tasks queue priority.
+ */
+ readonly setTasksQueuePriority: (enablePriority: boolean) => void
/**
* Tasks queue size.
*
/**
* Tasks queue size.
*
@@
-326,11
+343,11
@@
export interface IWorkerNode<Worker extends IWorker, Data = unknown>
*/
readonly dequeueTask: (bucket?: number) => Task<Data> | undefined
/**
*/
readonly dequeueTask: (bucket?: number) => Task<Data> | undefined
/**
- * Dequeue last
bucket
task.
+ * Dequeue last
prioritized
task.
*
* @returns The dequeued task.
*/
*
* @returns The dequeued task.
*/
- readonly dequeueLast
Bucket
Task: () => Task<Data> | undefined
+ readonly dequeueLast
Prioritized
Task: () => Task<Data> | undefined
/**
* Clears tasks queue.
*/
/**
* Clears tasks queue.
*/