mirror of https://github.com/nodejs/node.git
27 lines
788 B
JavaScript
27 lines
788 B
JavaScript
'use strict';
|
||
const common = require('../common');
|
||
|
||
const { parentPort, MessageChannel, Worker } = require('worker_threads');
|
||
|
||
// 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;
|
||
const w = new Worker(__filename);
|
||
w.once('message', common.mustCall(() => {
|
||
w.once('message', common.mustNotCall());
|
||
setTimeout(() => w.terminate(), 100);
|
||
}));
|
||
} else {
|
||
const { port1 } = new MessageChannel();
|
||
|
||
parentPort.postMessage('ready');
|
||
|
||
// Make sure we don’t end up running JS after the infinite loop is broken.
|
||
port1.postMessage({}, {
|
||
transfer: (function*() { while (true); })()
|
||
});
|
||
|
||
parentPort.postMessage('UNREACHABLE');
|
||
process.kill(process.pid, 'SIGINT');
|
||
}
|