• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Flags: --expose-gc
2'use strict';
3
4const common = require('../common');
5const assert = require('assert');
6const { Worker } = require('worker_threads');
7
8{
9  const sharedArrayBuffer = new SharedArrayBuffer(12);
10  const local = Buffer.from(sharedArrayBuffer);
11
12  const w = new Worker(`
13    const { parentPort } = require('worker_threads');
14    parentPort.on('message', ({ sharedArrayBuffer }) => {
15      const local = Buffer.from(sharedArrayBuffer);
16      local.write('world!', 6);
17      parentPort.postMessage('written!');
18    });
19  `, { eval: true });
20  w.on('message', common.mustCall(() => {
21    assert.strictEqual(local.toString(), 'Hello world!');
22    global.gc();
23    w.terminate();
24  }));
25  w.postMessage({ sharedArrayBuffer });
26  // This would be a race condition if the memory regions were overlapping
27  local.write('Hello ');
28}
29