• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2require('../common');
3const assert = require('assert');
4const { Worker } = require('worker_threads');
5
6// Make sure that allocating uninitialized ArrayBuffers in one thread does not
7// affect the zero-initialization in other threads.
8
9const w = new Worker(`
10const { parentPort } = require('worker_threads');
11
12function post() {
13  const uint32array = new Uint32Array(64);
14  parentPort.postMessage(uint32array.reduce((a, b) => a + b));
15}
16
17setInterval(post, 0);
18`, { eval: true });
19
20function allocBuffers() {
21  Buffer.allocUnsafe(32 * 1024 * 1024);
22}
23
24const interval = setInterval(allocBuffers, 0);
25
26let messages = 0;
27w.on('message', (sum) => {
28  assert.strictEqual(sum, 0);
29  if (messages++ === 100) {
30    clearInterval(interval);
31    w.terminate();
32  }
33});
34