0
0
mirror of https://github.com/nodejs/node.git synced 2024-12-01 16:10:02 +01:00

doc: add note about AsyncResource for Worker pooling

When implementing a pool for Worker threads, the correlation between
posting tasks and getting their results may get lost, depending on
the implementation.

The `AsyncResource` API is the primary way to solve that issue,
so link it from the recommendation in the worker docs.

(This was brought up at the collaborator summit in Berlin.)

PR-URL: https://github.com/nodejs/node/pull/28023
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
This commit is contained in:
Anna Henningsen 2019-06-02 16:09:14 +02:00
parent cde3928a10
commit 55de20999b
No known key found for this signature in database
GPG Key ID: 9C63F3A6CD2AD8F9

View File

@ -49,6 +49,10 @@ The above example spawns a Worker thread for each `parse()` call. In actual
practice, use a pool of Workers instead for these kinds of tasks. Otherwise, the practice, use a pool of Workers instead for these kinds of tasks. Otherwise, the
overhead of creating Workers would likely exceed their benefit. overhead of creating Workers would likely exceed their benefit.
When implementing a worker pool, use the [`AsyncResource`][] API to inform
diagnostic tools (e.g. in order to provide asynchronous stack traces) about the
correlation between tasks and their outcomes.
## worker.isMainThread ## worker.isMainThread
<!-- YAML <!-- YAML
added: v10.5.0 added: v10.5.0
@ -653,6 +657,7 @@ active handle in the event system. If the worker is already `unref()`ed calling
`unref()` again will have no effect. `unref()` again will have no effect.
[`'close'` event]: #worker_threads_event_close [`'close'` event]: #worker_threads_event_close
[`AsyncResource`]: async_hooks.html#async_hooks_class_asyncresource
[`Buffer`]: buffer.html [`Buffer`]: buffer.html
[`EventEmitter`]: events.html [`EventEmitter`]: events.html
[`EventTarget`]: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget [`EventTarget`]: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget