%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const common = require('../common'); const assert = require('assert'); const fs = require('fs/promises'); const { scheduler } = require('timers/promises'); const { parentPort, Worker } = require('worker_threads'); const MAX_ITERATIONS = 5; const MAX_THREADS = 6; // Do not use isMainThread so that this test itself can be run inside a Worker. if (!process.env.HAS_STARTED_WORKER) { process.env.HAS_STARTED_WORKER = 1; function spinWorker(iter) { const w = new Worker(__filename); w.on('message', common.mustCall((msg) => { assert.strictEqual(msg, 'terminate'); w.terminate(); })); w.on('exit', common.mustCall(() => { if (iter < MAX_ITERATIONS) spinWorker(++iter); })); } for (let i = 0; i < MAX_THREADS; i++) { spinWorker(0); } } else { async function open_close() { const fh = await fs.open(__filename); await fh.close(); await scheduler.yield(); await open_close(); } // These async function calls never return as they are meant to continually // open and close files until the worker is terminated. open_close(); open_close(); parentPort.postMessage('terminate'); }