test: add workerdata-sharedarraybuffer test
This functionality works but was previously untested. PR-URL: https://github.com/nodejs/node/pull/21180 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Minwoo Jung <minwoo@nodesource.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
921909961b
commit
b766af9ab9
32
test/parallel/test-worker-workerdata-sharedarraybuffer.js
Normal file
32
test/parallel/test-worker-workerdata-sharedarraybuffer.js
Normal file
@ -0,0 +1,32 @@
|
||||
// Flags: --expose-gc --experimental-worker
|
||||
'use strict';
|
||||
|
||||
const common = require('../common');
|
||||
const assert = require('assert');
|
||||
const { Worker } = require('worker_threads');
|
||||
|
||||
{
|
||||
const sharedArrayBuffer = new SharedArrayBuffer(12);
|
||||
const local = Buffer.from(sharedArrayBuffer);
|
||||
|
||||
const w = new Worker(`
|
||||
const { parentPort, workerData } = require('worker_threads');
|
||||
const local = Buffer.from(workerData.sharedArrayBuffer);
|
||||
|
||||
parentPort.on('message', () => {
|
||||
local.write('world!', 6);
|
||||
parentPort.postMessage('written!');
|
||||
});
|
||||
`, {
|
||||
eval: true,
|
||||
workerData: { sharedArrayBuffer }
|
||||
});
|
||||
w.on('message', common.mustCall(() => {
|
||||
assert.strictEqual(local.toString(), 'Hello world!');
|
||||
global.gc();
|
||||
w.terminate();
|
||||
}));
|
||||
w.postMessage({});
|
||||
// This would be a race condition if the memory regions were overlapping
|
||||
local.write('Hello ');
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user