39 lines
941 B
JavaScript
39 lines
941 B
JavaScript
|
'use strict';
|
||
|
|
||
|
const common = require('../common');
|
||
|
const {
|
||
|
postMessageToThread,
|
||
|
workerData,
|
||
|
Worker,
|
||
|
} = require('node:worker_threads');
|
||
|
const { rejects } = require('node:assert');
|
||
|
|
||
|
const memory = new SharedArrayBuffer(4);
|
||
|
|
||
|
async function test() {
|
||
|
const worker = new Worker(__filename, { workerData: { memory, children: true } });
|
||
|
const array = new Int32Array(memory);
|
||
|
|
||
|
await rejects(common.mustCall(function() {
|
||
|
return postMessageToThread(worker.threadId, 0, common.platformTimeout(500));
|
||
|
}), {
|
||
|
name: 'Error',
|
||
|
code: 'ERR_WORKER_MESSAGING_TIMEOUT',
|
||
|
});
|
||
|
|
||
|
Atomics.store(array, 0, 1);
|
||
|
Atomics.notify(array, 0);
|
||
|
}
|
||
|
|
||
|
if (!workerData?.children) {
|
||
|
test();
|
||
|
} else {
|
||
|
process.on('beforeExit', common.mustCall());
|
||
|
|
||
|
const array = new Int32Array(workerData.memory);
|
||
|
|
||
|
// Starve this thread waiting for the status to be unlocked.
|
||
|
// This happens in the main thread AFTER the timeout.
|
||
|
Atomics.wait(array, 0, 0);
|
||
|
}
|