diff options
Diffstat (limited to 'cli/tests/workers_round_robin_bench.ts')
-rw-r--r-- | cli/tests/workers_round_robin_bench.ts | 28 |
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(); }; |