worker: rename to worker_threads
PR-URL: https://github.com/nodejs/node/pull/20876 Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Shingo Inoue <leko.noor@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com> Reviewed-By: John-David Dalton <john.david.dalton@gmail.com> Reviewed-By: Gus Caplan <me@gus.host>
This commit is contained in:
parent
a319b4a398
commit
b7c7c0c496
@ -1,6 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const { parentPort } = require('worker');
|
const { parentPort } = require('worker_threads');
|
||||||
|
|
||||||
parentPort.on('message', (msg) => {
|
parentPort.on('message', (msg) => {
|
||||||
parentPort.postMessage(msg);
|
parentPort.postMessage(msg);
|
||||||
|
@ -12,7 +12,7 @@ const bench = common.createBenchmark(main, {
|
|||||||
const workerPath = path.resolve(__dirname, '..', 'fixtures', 'echo.worker.js');
|
const workerPath = path.resolve(__dirname, '..', 'fixtures', 'echo.worker.js');
|
||||||
|
|
||||||
function main(conf) {
|
function main(conf) {
|
||||||
const { Worker } = require('worker');
|
const { Worker } = require('worker_threads');
|
||||||
|
|
||||||
const n = +conf.n;
|
const n = +conf.n;
|
||||||
const workers = +conf.workers;
|
const workers = +conf.workers;
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
* [Utilities](util.html)
|
* [Utilities](util.html)
|
||||||
* [V8](v8.html)
|
* [V8](v8.html)
|
||||||
* [VM](vm.html)
|
* [VM](vm.html)
|
||||||
* [Worker](worker.html)
|
* [Worker Threads](worker_threads.html)
|
||||||
* [ZLIB](zlib.html)
|
* [ZLIB](zlib.html)
|
||||||
|
|
||||||
<div class="line"></div>
|
<div class="line"></div>
|
||||||
|
@ -46,5 +46,5 @@
|
|||||||
@include util
|
@include util
|
||||||
@include v8
|
@include v8
|
||||||
@include vm
|
@include vm
|
||||||
@include worker
|
@include worker_threads
|
||||||
@include zlib
|
@include zlib
|
||||||
|
@ -728,4 +728,4 @@ never be called.
|
|||||||
[Hook Callbacks]: #async_hooks_hook_callbacks
|
[Hook Callbacks]: #async_hooks_hook_callbacks
|
||||||
[PromiseHooks]: https://docs.google.com/document/d/1rda3yKGHimKIhg5YeoAmCOtyURgsbTH_qaYR79FELlk
|
[PromiseHooks]: https://docs.google.com/document/d/1rda3yKGHimKIhg5YeoAmCOtyURgsbTH_qaYR79FELlk
|
||||||
[promise execution tracking]: #async_hooks_promise_execution_tracking
|
[promise execution tracking]: #async_hooks_promise_execution_tracking
|
||||||
[`Worker`]: worker.html#worker_worker
|
[`Worker`]: worker_threads.html#worker_threads_class_worker
|
||||||
|
@ -2018,7 +2018,7 @@ cases:
|
|||||||
[`ChildProcess`]: child_process.html#child_process_class_childprocess
|
[`ChildProcess`]: child_process.html#child_process_class_childprocess
|
||||||
[`Error`]: errors.html#errors_class_error
|
[`Error`]: errors.html#errors_class_error
|
||||||
[`EventEmitter`]: events.html#events_class_eventemitter
|
[`EventEmitter`]: events.html#events_class_eventemitter
|
||||||
[`Worker`]: worker.html#worker_worker
|
[`Worker`]: worker_threads.html#worker_threads_class_worker
|
||||||
[`console.error()`]: console.html#console_console_error_data_args
|
[`console.error()`]: console.html#console_console_error_data_args
|
||||||
[`console.log()`]: console.html#console_console_log_data_args
|
[`console.log()`]: console.html#console_console_log_data_args
|
||||||
[`domain`]: domain.html
|
[`domain`]: domain.html
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Worker
|
# Worker Threads
|
||||||
|
|
||||||
<!--introduced_in=REPLACEME-->
|
<!--introduced_in=REPLACEME-->
|
||||||
|
|
||||||
@ -9,7 +9,7 @@ on independent threads, and to create message channels between them. It
|
|||||||
can be accessed using:
|
can be accessed using:
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const worker = require('worker');
|
const worker = require('worker_threads');
|
||||||
```
|
```
|
||||||
|
|
||||||
Workers are useful for performing CPU-intensive JavaScript operations; do not
|
Workers are useful for performing CPU-intensive JavaScript operations; do not
|
||||||
@ -23,7 +23,9 @@ share memory efficiently by transferring `ArrayBuffer` instances or sharing
|
|||||||
## Example
|
## Example
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const { Worker, isMainThread, parentPort, workerData } = require('worker');
|
const {
|
||||||
|
Worker, isMainThread, parentPort, workerData
|
||||||
|
} = require('worker_threads');
|
||||||
|
|
||||||
if (isMainThread) {
|
if (isMainThread) {
|
||||||
module.exports = async function parseJSAsync(script) {
|
module.exports = async function parseJSAsync(script) {
|
||||||
@ -104,7 +106,7 @@ yields an object with `port1` and `port2` properties, which refer to linked
|
|||||||
[`MessagePort`][] instances.
|
[`MessagePort`][] instances.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const { MessageChannel } = require('worker');
|
const { MessageChannel } = require('worker_threads');
|
||||||
|
|
||||||
const { port1, port2 } = new MessageChannel();
|
const { port1, port2 } = new MessageChannel();
|
||||||
port1.on('message', (message) => console.log('received', message));
|
port1.on('message', (message) => console.log('received', message));
|
||||||
@ -241,8 +243,8 @@ Notable differences inside a Worker environment are:
|
|||||||
|
|
||||||
- The [`process.stdin`][], [`process.stdout`][] and [`process.stderr`][]
|
- The [`process.stdin`][], [`process.stdout`][] and [`process.stderr`][]
|
||||||
may be redirected by the parent thread.
|
may be redirected by the parent thread.
|
||||||
- The [`require('worker').isMainThread`][] property is set to `false`.
|
- The [`require('worker_threads').isMainThread`][] property is set to `false`.
|
||||||
- The [`require('worker').parentPort`][] message port is available,
|
- The [`require('worker_threads').parentPort`][] message port is available,
|
||||||
- [`process.exit()`][] does not stop the whole program, just the single thread,
|
- [`process.exit()`][] does not stop the whole program, just the single thread,
|
||||||
and [`process.abort()`][] is not available.
|
and [`process.abort()`][] is not available.
|
||||||
- [`process.chdir()`][] and `process` methods that set group or user ids
|
- [`process.chdir()`][] and `process` methods that set group or user ids
|
||||||
@ -283,7 +285,9 @@ For example:
|
|||||||
|
|
||||||
```js
|
```js
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const { Worker, MessageChannel, MessagePort, isMainThread } = require('worker');
|
const {
|
||||||
|
Worker, MessageChannel, MessagePort, isMainThread
|
||||||
|
} = require('worker_threads');
|
||||||
if (isMainThread) {
|
if (isMainThread) {
|
||||||
const worker = new Worker(__filename);
|
const worker = new Worker(__filename);
|
||||||
const subChannel = new MessageChannel();
|
const subChannel = new MessageChannel();
|
||||||
@ -292,7 +296,7 @@ if (isMainThread) {
|
|||||||
console.log('received:', value);
|
console.log('received:', value);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
require('worker').once('workerMessage', (value) => {
|
require('worker_threads').once('workerMessage', (value) => {
|
||||||
assert(value.hereIsYourPort instanceof MessagePort);
|
assert(value.hereIsYourPort instanceof MessagePort);
|
||||||
value.hereIsYourPort.postMessage('the worker is sending this');
|
value.hereIsYourPort.postMessage('the worker is sending this');
|
||||||
value.hereIsYourPort.close();
|
value.hereIsYourPort.close();
|
||||||
@ -309,9 +313,9 @@ if (isMainThread) {
|
|||||||
* `eval` {boolean} If true, interpret the first argument to the constructor
|
* `eval` {boolean} If true, interpret the first argument to the constructor
|
||||||
as a script that is executed once the worker is online.
|
as a script that is executed once the worker is online.
|
||||||
* `data` {any} Any JavaScript value that will be cloned and made
|
* `data` {any} Any JavaScript value that will be cloned and made
|
||||||
available as [`require('worker').workerData`][]. The cloning will occur as
|
available as [`require('worker_threads').workerData`][]. The cloning will
|
||||||
described in the [HTML structured clone algorithm][], and an error will be
|
occur as described in the [HTML structured clone algorithm][], and an error
|
||||||
thrown if the object cannot be cloned (e.g. because it contains
|
will be thrown if the object cannot be cloned (e.g. because it contains
|
||||||
`function`s).
|
`function`s).
|
||||||
* stdin {boolean} If this is set to `true`, then `worker.stdin` will
|
* stdin {boolean} If this is set to `true`, then `worker.stdin` will
|
||||||
provide a writable stream whose contents will appear as `process.stdin`
|
provide a writable stream whose contents will appear as `process.stdin`
|
||||||
@ -351,8 +355,8 @@ added: REPLACEME
|
|||||||
* `value` {any} The transmitted value
|
* `value` {any} The transmitted value
|
||||||
|
|
||||||
The `'message'` event is emitted when the worker thread has invoked
|
The `'message'` event is emitted when the worker thread has invoked
|
||||||
[`require('worker').postMessage()`][]. See the [`port.on('message')`][] event
|
[`require('worker_threads').postMessage()`][]. See the [`port.on('message')`][]
|
||||||
for more details.
|
event for more details.
|
||||||
|
|
||||||
### Event: 'online'
|
### Event: 'online'
|
||||||
<!-- YAML
|
<!-- YAML
|
||||||
@ -371,8 +375,8 @@ added: REPLACEME
|
|||||||
* `transferList` {Object[]}
|
* `transferList` {Object[]}
|
||||||
|
|
||||||
Send a message to the worker that will be received via
|
Send a message to the worker that will be received via
|
||||||
[`require('worker').on('workerMessage')`][]. See [`port.postMessage()`][] for
|
[`require('worker_threads').on('workerMessage')`][].
|
||||||
more details.
|
See [`port.postMessage()`][] for more details.
|
||||||
|
|
||||||
### worker.ref()
|
### worker.ref()
|
||||||
<!-- YAML
|
<!-- YAML
|
||||||
@ -444,7 +448,7 @@ added: REPLACEME
|
|||||||
* {integer}
|
* {integer}
|
||||||
|
|
||||||
An integer identifier for the referenced thread. Inside the worker thread,
|
An integer identifier for the referenced thread. Inside the worker thread,
|
||||||
it is available as [`require('worker').threadId`][].
|
it is available as [`require('worker_threads').threadId`][].
|
||||||
|
|
||||||
### worker.unref()
|
### worker.unref()
|
||||||
<!-- YAML
|
<!-- YAML
|
||||||
@ -457,14 +461,14 @@ active handle in the event system. If the worker is already `unref()`ed calling
|
|||||||
|
|
||||||
[`Buffer`]: buffer.html
|
[`Buffer`]: buffer.html
|
||||||
[`EventEmitter`]: events.html
|
[`EventEmitter`]: events.html
|
||||||
[`MessagePort`]: #worker_class_messageport
|
[`MessagePort`]: #worker_threads_class_messageport
|
||||||
[`port.postMessage()`]: #worker_port_postmessage_value_transferlist
|
[`port.postMessage()`]: #worker_threads_port_postmessage_value_transferlist
|
||||||
[`Worker`]: #worker_class_worker
|
[`Worker`]: #worker_threads_class_worker
|
||||||
[`worker.terminate()`]: #worker_worker_terminate_callback
|
[`worker.terminate()`]: #worker_threads_worker_terminate_callback
|
||||||
[`worker.postMessage()`]: #worker_worker_postmessage_value_transferlist_1
|
[`worker.postMessage()`]: #worker_threads_worker_postmessage_value_transferlist_1
|
||||||
[`worker.on('message')`]: #worker_event_message_1
|
[`worker.on('message')`]: #worker_threads_event_message_1
|
||||||
[`worker.threadId`]: #worker_worker_threadid_1
|
[`worker.threadId`]: #worker_threads_worker_threadid_1
|
||||||
[`port.on('message')`]: #worker_event_message
|
[`port.on('message')`]: #worker_threads_event_message
|
||||||
[`process.exit()`]: process.html#process_process_exit_code
|
[`process.exit()`]: process.html#process_process_exit_code
|
||||||
[`process.abort()`]: process.html#process_process_abort
|
[`process.abort()`]: process.html#process_process_abort
|
||||||
[`process.chdir()`]: process.html#process_process_chdir_directory
|
[`process.chdir()`]: process.html#process_process_chdir_directory
|
||||||
@ -473,11 +477,11 @@ active handle in the event system. If the worker is already `unref()`ed calling
|
|||||||
[`process.stderr`]: process.html#process_process_stderr
|
[`process.stderr`]: process.html#process_process_stderr
|
||||||
[`process.stdout`]: process.html#process_process_stdout
|
[`process.stdout`]: process.html#process_process_stdout
|
||||||
[`process.title`]: process.html#process_process_title
|
[`process.title`]: process.html#process_process_title
|
||||||
[`require('worker').workerData`]: #worker_worker_workerdata
|
[`require('worker_threads').workerData`]: #worker_threads_worker_workerdata
|
||||||
[`require('worker').on('workerMessage')`]: #worker_event_workermessage
|
[`require('worker_threads').on('workerMessage')`]: #worker_threads_event_workermessage
|
||||||
[`require('worker').postMessage()`]: #worker_worker_postmessage_value_transferlist
|
[`require('worker_threads').postMessage()`]: #worker_threads_worker_postmessage_value_transferlist
|
||||||
[`require('worker').isMainThread`]: #worker_worker_ismainthread
|
[`require('worker_threads').isMainThread`]: #worker_threads_worker_ismainthread
|
||||||
[`require('worker').threadId`]: #worker_worker_threadid
|
[`require('worker_threads').threadId`]: #worker_threads_worker_threadid
|
||||||
[`cluster` module]: cluster.html
|
[`cluster` module]: cluster.html
|
||||||
[`inspector`]: inspector.html
|
[`inspector`]: inspector.html
|
||||||
[v8.serdes]: v8.html#v8_serialization_api
|
[v8.serdes]: v8.html#v8_serialization_api
|
@ -195,7 +195,8 @@
|
|||||||
|
|
||||||
NativeModule.isInternal = function(id) {
|
NativeModule.isInternal = function(id) {
|
||||||
return id.startsWith('internal/') ||
|
return id.startsWith('internal/') ||
|
||||||
(id === 'worker' && !process.binding('config').experimentalWorker);
|
(id === 'worker_threads' &&
|
||||||
|
!process.binding('config').experimentalWorker);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ const builtinLibs = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
if (process.binding('config').experimentalWorker) {
|
if (process.binding('config').experimentalWorker) {
|
||||||
builtinLibs.push('worker');
|
builtinLibs.push('worker_threads');
|
||||||
builtinLibs.sort();
|
builtinLibs.sort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -387,7 +387,7 @@ function setupChild(evalScript) {
|
|||||||
debug(`[${threadId}] is setting up worker child environment`);
|
debug(`[${threadId}] is setting up worker child environment`);
|
||||||
const port = getEnvMessagePort();
|
const port = getEnvMessagePort();
|
||||||
|
|
||||||
const publicWorker = require('worker');
|
const publicWorker = require('worker_threads');
|
||||||
|
|
||||||
port.on('message', (message) => {
|
port.on('message', (message) => {
|
||||||
if (message.type === 'loadScript') {
|
if (message.type === 'loadScript') {
|
||||||
|
2
node.gyp
2
node.gyp
@ -78,7 +78,7 @@
|
|||||||
'lib/util.js',
|
'lib/util.js',
|
||||||
'lib/v8.js',
|
'lib/v8.js',
|
||||||
'lib/vm.js',
|
'lib/vm.js',
|
||||||
'lib/worker.js',
|
'lib/worker_threads.js',
|
||||||
'lib/zlib.js',
|
'lib/zlib.js',
|
||||||
'lib/internal/assert.js',
|
'lib/internal/assert.js',
|
||||||
'lib/internal/async_hooks.js',
|
'lib/internal/async_hooks.js',
|
||||||
|
@ -48,7 +48,7 @@ Object.defineProperty(exports, 'PORT', {
|
|||||||
|
|
||||||
exports.isMainThread = (() => {
|
exports.isMainThread = (() => {
|
||||||
try {
|
try {
|
||||||
return require('worker').isMainThread;
|
return require('worker_threads').isMainThread;
|
||||||
} catch {
|
} catch {
|
||||||
// Worker module not enabled → only a single main thread exists.
|
// Worker module not enabled → only a single main thread exists.
|
||||||
return true;
|
return true;
|
||||||
|
2
test/fixtures/worker-script.mjs
vendored
2
test/fixtures/worker-script.mjs
vendored
@ -1,3 +1,3 @@
|
|||||||
import worker from 'worker';
|
import worker from 'worker_threads';
|
||||||
|
|
||||||
worker.parentPort.postMessage('Hello, world!');
|
worker.parentPort.postMessage('Hello, world!');
|
||||||
|
@ -3,14 +3,14 @@
|
|||||||
|
|
||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const { Worker } = require('worker');
|
const { Worker } = require('worker_threads');
|
||||||
|
|
||||||
{
|
{
|
||||||
const sharedArrayBuffer = new SharedArrayBuffer(12);
|
const sharedArrayBuffer = new SharedArrayBuffer(12);
|
||||||
const local = Buffer.from(sharedArrayBuffer);
|
const local = Buffer.from(sharedArrayBuffer);
|
||||||
|
|
||||||
const w = new Worker(`
|
const w = new Worker(`
|
||||||
const { parentPort } = require('worker');
|
const { parentPort } = require('worker_threads');
|
||||||
parentPort.on('message', ({ sharedArrayBuffer }) => {
|
parentPort.on('message', ({ sharedArrayBuffer }) => {
|
||||||
const local = Buffer.from(sharedArrayBuffer);
|
const local = Buffer.from(sharedArrayBuffer);
|
||||||
local.write('world!', 6);
|
local.write('world!', 6);
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const { MessageChannel, MessagePort, Worker } = require('worker');
|
const { MessageChannel, MessagePort, Worker } = require('worker_threads');
|
||||||
|
|
||||||
{
|
{
|
||||||
const channel = new MessageChannel();
|
const channel = new MessageChannel();
|
||||||
@ -29,9 +29,9 @@ const { MessageChannel, MessagePort, Worker } = require('worker');
|
|||||||
const channel = new MessageChannel();
|
const channel = new MessageChannel();
|
||||||
|
|
||||||
const w = new Worker(`
|
const w = new Worker(`
|
||||||
const { MessagePort } = require('worker');
|
const { MessagePort } = require('worker_threads');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
require('worker').parentPort.on('message', ({ port }) => {
|
require('worker_threads').parentPort.on('message', ({ port }) => {
|
||||||
assert(port instanceof MessagePort);
|
assert(port instanceof MessagePort);
|
||||||
port.postMessage('works');
|
port.postMessage('works');
|
||||||
});
|
});
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
|
|
||||||
const { MessageChannel } = require('worker');
|
const { MessageChannel } = require('worker_threads');
|
||||||
|
|
||||||
{
|
{
|
||||||
const { port1, port2 } = new MessageChannel();
|
const { port1, port2 } = new MessageChannel();
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
|
|
||||||
const { MessageChannel } = require('worker');
|
const { MessageChannel } = require('worker_threads');
|
||||||
|
|
||||||
{
|
{
|
||||||
const { port1: basePort1, port2: basePort2 } = new MessageChannel();
|
const { port1: basePort1, port2: basePort2 } = new MessageChannel();
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
|
|
||||||
const { MessageChannel, MessagePort } = require('worker');
|
const { MessageChannel, MessagePort } = require('worker_threads');
|
||||||
|
|
||||||
{
|
{
|
||||||
const { port1, port2 } = new MessageChannel();
|
const { port1, port2 } = new MessageChannel();
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const { Worker, isMainThread, parentPort } = require('worker');
|
const { Worker, isMainThread, parentPort } = require('worker_threads');
|
||||||
const { Server } = require('net');
|
const { Server } = require('net');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
// Flags: --experimental-worker
|
// Flags: --experimental-worker
|
||||||
'use strict';
|
'use strict';
|
||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const { Worker } = require('worker');
|
const { Worker } = require('worker_threads');
|
||||||
|
|
||||||
const w = new Worker(`
|
const w = new Worker(`
|
||||||
const dns = require('dns');
|
const dns = require('dns');
|
||||||
dns.lookup('nonexistent.org', () => {});
|
dns.lookup('nonexistent.org', () => {});
|
||||||
require('worker').parentPort.postMessage('0');
|
require('worker_threads').parentPort.postMessage('0');
|
||||||
`, { eval: true });
|
`, { eval: true });
|
||||||
|
|
||||||
w.on('message', common.mustCall(() => {
|
w.on('message', common.mustCall(() => {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const fixtures = require('../common/fixtures');
|
const fixtures = require('../common/fixtures');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const { Worker } = require('worker');
|
const { Worker } = require('worker_threads');
|
||||||
|
|
||||||
const w = new Worker(fixtures.path('worker-script.mjs'));
|
const w = new Worker(fixtures.path('worker-script.mjs'));
|
||||||
w.on('message', common.mustCall((message) => {
|
w.on('message', common.mustCall((message) => {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const util = require('util');
|
const util = require('util');
|
||||||
const { Worker } = require('worker');
|
const { Worker } = require('worker_threads');
|
||||||
|
|
||||||
const numWorkers = +process.env.JOBS || require('os').cpus().length;
|
const numWorkers = +process.env.JOBS || require('os').cpus().length;
|
||||||
|
|
||||||
@ -13,7 +13,7 @@ function run(n, done) {
|
|||||||
if (n <= 0)
|
if (n <= 0)
|
||||||
return done();
|
return done();
|
||||||
const worker = new Worker(
|
const worker = new Worker(
|
||||||
'require(\'worker\').parentPort.postMessage(2 + 2)',
|
'require(\'worker_threads\').parentPort.postMessage(2 + 2)',
|
||||||
{ eval: true });
|
{ eval: true });
|
||||||
worker.on('message', common.mustCall((value) => {
|
worker.on('message', common.mustCall((value) => {
|
||||||
assert.strictEqual(value, 4);
|
assert.strictEqual(value, 4);
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
// Flags: --experimental-worker
|
// Flags: --experimental-worker
|
||||||
'use strict';
|
'use strict';
|
||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const { Worker } = require('worker');
|
const { Worker } = require('worker_threads');
|
||||||
|
|
||||||
// Checks that terminating in the middle of `process.nextTick()` does not
|
// Checks that terminating in the middle of `process.nextTick()` does not
|
||||||
// Crash the process.
|
// Crash the process.
|
||||||
|
|
||||||
const w = new Worker(`
|
const w = new Worker(`
|
||||||
require('worker').parentPort.postMessage('0');
|
require('worker_threads').parentPort.postMessage('0');
|
||||||
process.nextTick(() => {
|
process.nextTick(() => {
|
||||||
while(1);
|
while(1);
|
||||||
});
|
});
|
||||||
|
@ -5,7 +5,7 @@ const assert = require('assert');
|
|||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const util = require('util');
|
const util = require('util');
|
||||||
const { Writable } = require('stream');
|
const { Writable } = require('stream');
|
||||||
const { Worker, isMainThread } = require('worker');
|
const { Worker, isMainThread } = require('worker_threads');
|
||||||
|
|
||||||
class BufferingWritable extends Writable {
|
class BufferingWritable extends Writable {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const fixtures = require('../common/fixtures');
|
const fixtures = require('../common/fixtures');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const { Worker } = require('worker');
|
const { Worker } = require('worker_threads');
|
||||||
|
|
||||||
// Do not use isMainThread so that this test itself can be run inside a Worker.
|
// Do not use isMainThread so that this test itself can be run inside a Worker.
|
||||||
if (!process.env.HAS_STARTED_WORKER) {
|
if (!process.env.HAS_STARTED_WORKER) {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const { Worker } = require('worker');
|
const { Worker } = require('worker_threads');
|
||||||
|
|
||||||
// Do not use isMainThread so that this test itself can be run inside a Worker.
|
// Do not use isMainThread so that this test itself can be run inside a Worker.
|
||||||
if (!process.env.HAS_STARTED_WORKER) {
|
if (!process.env.HAS_STARTED_WORKER) {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const { Worker } = require('worker');
|
const { Worker } = require('worker_threads');
|
||||||
|
|
||||||
// Do not use isMainThread so that this test itself can be run inside a Worker.
|
// Do not use isMainThread so that this test itself can be run inside a Worker.
|
||||||
if (!process.env.HAS_STARTED_WORKER) {
|
if (!process.env.HAS_STARTED_WORKER) {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const { Worker } = require('worker');
|
const { Worker } = require('worker_threads');
|
||||||
|
|
||||||
// Do not use isMainThread so that this test itself can be run inside a Worker.
|
// Do not use isMainThread so that this test itself can be run inside a Worker.
|
||||||
if (!process.env.HAS_STARTED_WORKER) {
|
if (!process.env.HAS_STARTED_WORKER) {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const { Worker } = require('worker');
|
const { Worker } = require('worker_threads');
|
||||||
|
|
||||||
{
|
{
|
||||||
const expectedErr = common.expectsError({
|
const expectedErr = common.expectsError({
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const { Worker, isMainThread, parentPort } = require('worker');
|
const { Worker, isMainThread, parentPort } = require('worker_threads');
|
||||||
|
|
||||||
if (isMainThread) {
|
if (isMainThread) {
|
||||||
const w = new Worker(__filename);
|
const w = new Worker(__filename);
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const { Worker, isMainThread, parentPort } = require('worker');
|
const { Worker, isMainThread, parentPort } = require('worker_threads');
|
||||||
|
|
||||||
if (isMainThread) {
|
if (isMainThread) {
|
||||||
const w = new Worker(__filename);
|
const w = new Worker(__filename);
|
||||||
|
@ -5,7 +5,7 @@ if (typeof require === 'undefined') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const { Worker } = require('worker');
|
const { Worker } = require('worker_threads');
|
||||||
|
|
||||||
new Worker(path.resolve(process.cwd(), process.argv[2]))
|
new Worker(path.resolve(process.cwd(), process.argv[2]))
|
||||||
.on('exit', (code) => process.exitCode = code);
|
.on('exit', (code) => process.exitCode = code);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user