diff options
| author | Inteon <42113979+inteon@users.noreply.github.com> | 2021-02-23 13:08:50 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-23 13:08:50 +0100 |
| commit | dccf5e0c5c7f04409809104dd23472bcc058e170 (patch) | |
| tree | 23bad9b434c45fd08315abef66f1fe16add14a44 /cli/tests/workers_large_message_bench.ts | |
| parent | 2e24af23002b6d77543861bf9b2a6027e0357a93 (diff) | |
refactor(core): Allow multiple overflown responses in single poll (#9433)
This commit rewrites "JsRuntime::poll" function to fix a corner case that
might caused "overflown_response" to be overwritten by other overflown response.
The logic has been changed to allow returning multiple overflown response
alongside responses from shared queue.
Diffstat (limited to 'cli/tests/workers_large_message_bench.ts')
| -rw-r--r-- | cli/tests/workers_large_message_bench.ts | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/cli/tests/workers_large_message_bench.ts b/cli/tests/workers_large_message_bench.ts new file mode 100644 index 000000000..9cda5a40d --- /dev/null +++ b/cli/tests/workers_large_message_bench.ts @@ -0,0 +1,35 @@ +// Copyright 2020 the Deno authors. All rights reserved. MIT license. + +// deno-lint-ignore-file + +import { deferred } from "../../test_util/std/async/deferred.ts"; + +function oneWorker(i: any): Promise<void> { + return new Promise<void>((resolve) => { + let countDown = 10; + const worker = new Worker( + new URL("workers/large_message_worker.js", import.meta.url).href, + { type: "module" }, + ); + worker.onmessage = (e): void => { + if (countDown > 0) { + countDown--; + return; + } + worker.terminate(); + resolve(); + }; + worker.postMessage("hi " + i); + }); +} + +function bench(): Promise<any> { + let promises = []; + for (let i = 0; i < 50; i++) { + promises.push(oneWorker(i)); + } + + return Promise.all(promises); +} + +bench(); |
