File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change @@ -968,6 +968,45 @@ active handle in the event system. If the worker is already `unref()`ed calling
968968
969969## Notes
970970
971+ ### Synchronous blocking of stdio
972+
973+ ` Worker ` s utilize message passing via {MessagePort} to implement interactions
974+ with ` stdio ` . This means that ` stdio ` output originating from a ` Worker ` can
975+ get blocked by synchronous code on the receiving end that is blocking the
976+ Node.js event loop.
977+
978+ ``` mjs
979+ import {
980+ Worker ,
981+ isMainThread ,
982+ } from ' worker_threads' ;
983+
984+ if (isMainThread) {
985+ new Worker (new URL (import .meta.url));
986+ for (let n = 0 ; n < 1e10 ; n++ ) {}
987+ } else {
988+ // This output will be blocked by the for loop in the main thread.
989+ console .log (' foo' );
990+ }
991+ ` ` `
992+
993+ ` ` ` cjs
994+ ' use strict' ;
995+
996+ const {
997+ Worker ,
998+ isMainThread ,
999+ } = require (' worker_threads' );
1000+
1001+ if (isMainThread) {
1002+ new Worker (__filename );
1003+ for (let n = 0 ; n < 1e10 ; n++ ) {}
1004+ } else {
1005+ // This output will be blocked by the for loop in the main thread.
1006+ console .log (' foo' );
1007+ }
1008+ ` ` `
1009+
9711010### Launching worker threads from preload scripts
9721011
9731012Take care when launching worker threads from preload scripts (scripts loaded
You can’t perform that action at this time.
0 commit comments