File tree Expand file tree Collapse file tree 3 files changed +30
-0
lines changed
Expand file tree Collapse file tree 3 files changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -1861,6 +1861,21 @@ Calling `unref()` on a worker allows the thread to exit if this is the only
18611861active handle in the event system . If the worker is already ` unref()` ed calling
18621862` unref()` again has no effect.
18631863
1864+ ### ` worker[Symbol.asyncDispose]()`
1865+
1866+ <!-- YAML
1867+ added: REPLACEME
1868+ -->
1869+
1870+ Calls [` worker.terminate()` ][] when the dispose scope is exited.
1871+
1872+ ` ` ` js
1873+ async function example() {
1874+ await using worker = new Worker('for (;;) {}', { eval: true });
1875+ // Worker is automatically terminate when the scope is exited.
1876+ }
1877+ ` ` `
1878+
18641879## Notes
18651880
18661881### Synchronous blocking of stdio
Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ const {
1919 String,
2020 StringPrototypeTrim,
2121 Symbol,
22+ SymbolAsyncDispose,
2223 SymbolFor,
2324 TypedArrayPrototypeFill,
2425 Uint32Array,
@@ -407,6 +408,10 @@ class Worker extends EventEmitter {
407408 } ) ;
408409 }
409410
411+ async [ SymbolAsyncDispose ] ( ) {
412+ await this . terminate ( ) ;
413+ }
414+
410415 ref ( ) {
411416 if ( this [ kHandle ] === null ) return ;
412417
Original file line number Diff line number Diff line change 1+ import * as common from '../common/index.mjs' ;
2+ import { Worker } from 'node:worker_threads' ;
3+
4+ let w ;
5+ {
6+ // Verifies that the worker is async disposable
7+ await using worker = new Worker ( 'for(;;) {}' , { eval : true } ) ;
8+ w = worker ;
9+ w . on ( 'exit' , common . mustCall ( ) ) ;
10+ }
You can’t perform that action at this time.
0 commit comments