mirror of
https://github.com/denoland/deno.git
synced 2024-12-28 10:09:20 -05:00
adc2f08c17
This commit adds new option to "Worker" Web API that allows to configure permissions. New "Worker.deno.permissions" option can be used to define limited permissions to the worker thread by either: - inherit set of parent thread permissions - use limited subset of parent thread permissions - revoke all permissions (full sandbox) In order to achieve this functionality "CliModuleLoader" was modified to accept "initial permissions", which are used for top module loading (ie. uses parent thread permission set to load top level module of a worker).
33 lines
952 B
TypeScript
33 lines
952 B
TypeScript
// Benchmark measures time it takes to start and stop a number of workers.
|
|
const workerCount = 50;
|
|
|
|
async function bench(): Promise<void> {
|
|
const workers: Worker[] = [];
|
|
for (let i = 1; i <= workerCount; ++i) {
|
|
const worker = new Worker(
|
|
new URL("workers/bench_worker.ts", import.meta.url).href,
|
|
{ type: "module" },
|
|
);
|
|
const promise = new Promise<void>((resolve): void => {
|
|
worker.onmessage = (e): void => {
|
|
if (e.data.cmdId === 0) resolve();
|
|
};
|
|
});
|
|
worker.postMessage({ cmdId: 0, action: 2 });
|
|
await promise;
|
|
workers.push(worker);
|
|
}
|
|
console.log("Done creating workers closing workers!");
|
|
for (const worker of workers) {
|
|
const promise = new Promise<void>((resolve): void => {
|
|
worker.onmessage = (e): void => {
|
|
if (e.data.cmdId === 3) resolve();
|
|
};
|
|
});
|
|
worker.postMessage({ action: 3 });
|
|
await promise;
|
|
}
|
|
console.log("Finished!");
|
|
}
|
|
|
|
bench();
|