mirror of
https://github.com/denoland/deno.git
synced 2025-09-26 12:19:12 +00:00
workers: basic event loop (#3828)
* establish basic event loop for workers * make "self.close()" inside worker * remove "runWorkerMessageLoop() - instead manually call global function in Rust when message arrives. This is done in preparation for structured clone * refactor "WorkerChannel" and use distinct structs for internal and external channels; "WorkerChannelsInternal" and "WorkerHandle" * move "State.worker_channels_internal" to "Worker.internal_channels" * add "WorkerEvent" enum for child->host communication; currently "Message(Buf)" and "Error(ErrBox)" variants are supported * add tests for nested workers * add tests for worker throwing error on startup
This commit is contained in:
parent
81905a867e
commit
79b3bc05d6
26 changed files with 779 additions and 517 deletions
|
@ -40,10 +40,7 @@ import { Diagnostic } from "./diagnostics.ts";
|
|||
import { fromTypeScriptDiagnostic } from "./diagnostics_util.ts";
|
||||
import { assert } from "./util.ts";
|
||||
import * as util from "./util.ts";
|
||||
import {
|
||||
bootstrapWorkerRuntime,
|
||||
runWorkerMessageLoop
|
||||
} from "./runtime_worker.ts";
|
||||
import { bootstrapWorkerRuntime } from "./runtime_worker.ts";
|
||||
|
||||
interface CompilerRequestCompile {
|
||||
type: CompilerRequestType.Compile;
|
||||
|
@ -340,13 +337,11 @@ async function wasmCompilerOnMessage({
|
|||
function bootstrapTsCompilerRuntime(): void {
|
||||
bootstrapWorkerRuntime("TS");
|
||||
globalThis.onmessage = tsCompilerOnMessage;
|
||||
runWorkerMessageLoop();
|
||||
}
|
||||
|
||||
function bootstrapWasmCompilerRuntime(): void {
|
||||
bootstrapWorkerRuntime("WASM");
|
||||
globalThis.onmessage = wasmCompilerOnMessage;
|
||||
runWorkerMessageLoop();
|
||||
}
|
||||
|
||||
Object.defineProperties(globalThis, {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue