summaryrefslogtreecommitdiff
path: root/cli/tests/workers_round_robin_bench.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/workers_round_robin_bench.ts')
-rw-r--r--cli/tests/workers_round_robin_bench.ts28
1 files changed, 6 insertions, 22 deletions
diff --git a/cli/tests/workers_round_robin_bench.ts b/cli/tests/workers_round_robin_bench.ts
index 2edb92b8c..8467480b8 100644
--- a/cli/tests/workers_round_robin_bench.ts
+++ b/cli/tests/workers_round_robin_bench.ts
@@ -5,26 +5,10 @@ const data = "HTTP/1.1 200 OK\r\nContent-Length: 12\r\n\r\nHello World\n";
const workerCount = 4;
const cmdsPerWorker = 400;
-export interface ResolvableMethods<T> {
- resolve: (value: T | PromiseLike<T>) => void;
- // deno-lint-ignore no-explicit-any
- reject: (reason?: any) => void;
-}
-
-export type Resolvable<T> = Promise<T> & ResolvableMethods<T>;
-
-export function createResolvable<T = void>(): Resolvable<T> {
- let methods: ResolvableMethods<T>;
- const promise = new Promise<T>((resolve, reject): void => {
- methods = { resolve, reject };
- });
- // TypeScript doesn't know that the Promise callback occurs synchronously
- // therefore use of not null assertion (`!`)
- return Object.assign(promise, methods!) as Resolvable<T>;
-}
+import { Deferred, deferred } from "../../std/async/deferred.ts";
function handleAsyncMsgFromWorker(
- promiseTable: Map<number, Resolvable<string>>,
+ promiseTable: Map<number, Deferred<string>>,
msg: { cmdId: number; data: string },
): void {
const promise = promiseTable.get(msg.cmdId);
@@ -35,13 +19,13 @@ function handleAsyncMsgFromWorker(
}
async function main(): Promise<void> {
- const workers: Array<[Map<number, Resolvable<string>>, Worker]> = [];
+ const workers: Array<[Map<number, Deferred<string>>, Worker]> = [];
for (let i = 1; i <= workerCount; ++i) {
const worker = new Worker(
new URL("subdir/bench_worker.ts", import.meta.url).href,
{ type: "module" },
);
- const promise = createResolvable();
+ const promise = deferred();
worker.onmessage = (e): void => {
if (e.data.cmdId === 0) promise.resolve();
};
@@ -58,7 +42,7 @@ async function main(): Promise<void> {
for (const cmdId of Array(cmdsPerWorker).keys()) {
const promises: Array<Promise<string>> = [];
for (const [promiseTable, worker] of workers) {
- const promise = createResolvable<string>();
+ const promise = deferred<string>();
promiseTable.set(cmdId, promise);
worker.postMessage({ cmdId: cmdId, action: 1, data });
promises.push(promise);
@@ -68,7 +52,7 @@ async function main(): Promise<void> {
}
}
for (const [, worker] of workers) {
- const promise = createResolvable();
+ const promise = deferred();
worker.onmessage = (e): void => {
if (e.data.cmdId === 3) promise.resolve();
};