2020-05-11 00:25:49 +02:00
|
|
|
|
'use strict';
|
|
|
|
|
const common = require('../common');
|
|
|
|
|
const assert = require('assert');
|
|
|
|
|
const { Worker } = require('worker_threads');
|
|
|
|
|
|
|
|
|
|
// Like test-async-hooks-worker-promise.js but doing a trivial counter increase
|
|
|
|
|
// after process.exit(). This should not make a difference, but apparently it
|
|
|
|
|
// does. This is *also* different from test-async-hooks-worker-promise-3.js,
|
|
|
|
|
// in that the statement is an ArrayBuffer access rather than a full method,
|
|
|
|
|
// which *also* makes a difference even though it shouldn’t.
|
|
|
|
|
|
|
|
|
|
const workerData = new Int32Array(new SharedArrayBuffer(4));
|
|
|
|
|
const w = new Worker(`
|
|
|
|
|
const { createHook } = require('async_hooks');
|
2022-12-25 17:54:12 +08:00
|
|
|
|
const { workerData } = require('worker_threads');
|
2020-05-11 00:25:49 +02:00
|
|
|
|
|
|
|
|
|
setImmediate(async () => {
|
|
|
|
|
createHook({ init() {} }).enable();
|
|
|
|
|
await 0;
|
|
|
|
|
process.exit();
|
|
|
|
|
workerData[0]++;
|
|
|
|
|
});
|
|
|
|
|
`, { eval: true, workerData });
|
|
|
|
|
|
|
|
|
|
w.on('exit', common.mustCall(() => assert.strictEqual(workerData[0], 0)));
|