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