summaryrefslogtreecommitdiff
path: root/test/parallel/test-worker-sharedarraybuffer-from-worker-thread.js
blob: 60e8a5d52ab5bfa5a239958ac2a617243928858a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
'use strict';
const common = require('../common');
const assert = require('assert');
const { Worker } = require('worker_threads');

// Regression test for https://github.com/nodejs/node/issues/28777
// Make sure that SharedArrayBuffers created in Worker threads are accessible
// after the creating thread ended.

const w = new Worker(`
const { parentPort } = require('worker_threads');
const sharedArrayBuffer = new SharedArrayBuffer(4);
parentPort.postMessage(sharedArrayBuffer);
`, { eval: true });

let sharedArrayBuffer;
w.once('message', common.mustCall((message) => sharedArrayBuffer = message));
w.once('exit', common.mustCall(() => {
  const uint8array = new Uint8Array(sharedArrayBuffer);
  uint8array[0] = 42;
  assert.deepStrictEqual(uint8array, new Uint8Array([42, 0, 0, 0]));
}));