worker: support MessagePort to workers data · nodejs/node@8cb5e41 · GitHub
Skip to content

Commit 8cb5e41

Browse files
juanarboltargos
authored andcommitted
worker: support MessagePort to workers data
PR-URL: #32278 Fixes: #32250 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent 8f0c106 commit 8cb5e41

3 files changed

Lines changed: 69 additions & 1 deletion

File tree

doc/api/worker_threads.md

Lines changed: 3 additions & 0 deletions

lib/internal/worker.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,11 @@ class Worker extends EventEmitter {
183183
this[kParentSideStdio] = { stdin, stdout, stderr };
184184

185185
const { port1, port2 } = new MessageChannel();
186+
const transferList = [port2];
187+
// If transferList is provided.
188+
if (options.transferList)
189+
transferList.push(...options.transferList);
190+
186191
this[kPublicPort] = port1;
187192
this[kPublicPort].on('message', (message) => this.emit('message', message));
188193
setupPortReferencing(this[kPublicPort], this, 'message');
@@ -198,7 +203,7 @@ class Worker extends EventEmitter {
198203
require('internal/process/policy').src :
199204
null,
200205
hasStdin: !!options.stdin
201-
}, [port2]);
206+
}, transferList);
202207
// Actually start the new thread now that everything is in place.
203208
this[kHandle].startThread();
204209
}
Lines changed: 60 additions & 0 deletions

0 commit comments

Comments
 (0)