| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 7c97347 commit c3922af
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -680,6 +680,12 @@ void Worker::Ref(const FunctionCallbackInfo<Value>& args) { | |||
| 680 | 680 | } | |
| 681 | 681 | } | |
| 682 | 682 | ||
| 683 | + void Worker::HasRef(const FunctionCallbackInfo<Value>& args) { | ||
| 684 | + Worker* w; | ||
| 685 | + ASSIGN_OR_RETURN_UNWRAP(&w, args.This()); | ||
| 686 | + args.GetReturnValue().Set(w->has_ref_); | ||
| 687 | + } | ||
| 688 | + | ||
| 683 | 689 | void Worker::Unref(const FunctionCallbackInfo<Value>& args) { | |
| 684 | 690 | Worker* w; | |
| 685 | 691 | ASSIGN_OR_RETURN_UNWRAP(&w, args.This()); | |
@@ -842,6 +848,7 @@ void InitWorker(Local<Object> target, | |||
| 842 | 848 | ||
| 843 | 849 | env->SetProtoMethod(w, "startThread", Worker::StartThread); | |
| 844 | 850 | env->SetProtoMethod(w, "stopThread", Worker::StopThread); | |
| 851 | + env->SetProtoMethod(w, "hasRef", Worker::HasRef); | ||
| 845 | 852 | env->SetProtoMethod(w, "ref", Worker::Ref); | |
| 846 | 853 | env->SetProtoMethod(w, "unref", Worker::Unref); | |
| 847 | 854 | env->SetProtoMethod(w, "getResourceLimits", Worker::GetResourceLimits); | |
@@ -905,6 +912,7 @@ void RegisterExternalReferences(ExternalReferenceRegistry* registry) { | |||
| 905 | 912 | registry->Register(Worker::New); | |
| 906 | 913 | registry->Register(Worker::StartThread); | |
| 907 | 914 | registry->Register(Worker::StopThread); | |
| 915 | + registry->Register(Worker::HasRef); | ||
| 908 | 916 | registry->Register(Worker::Ref); | |
| 909 | 917 | registry->Register(Worker::Unref); | |
| 910 | 918 | registry->Register(Worker::GetResourceLimits); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -61,6 +61,7 @@ class Worker : public AsyncWrap { | |||
| 61 | 61 | static void SetEnvVars(const v8::FunctionCallbackInfo<v8::Value>& args); | |
| 62 | 62 | static void StartThread(const v8::FunctionCallbackInfo<v8::Value>& args); | |
| 63 | 63 | static void StopThread(const v8::FunctionCallbackInfo<v8::Value>& args); | |
| 64 | + static void HasRef(const v8::FunctionCallbackInfo<v8::Value>& args); | ||
| 64 | 65 | static void Ref(const v8::FunctionCallbackInfo<v8::Value>& args); | |
| 65 | 66 | static void Unref(const v8::FunctionCallbackInfo<v8::Value>& args); | |
| 66 | 67 | static void GetResourceLimits( | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,33 @@ | |||
| 1 | + 'use strict'; | ||
| 2 | + const common = require('../common'); | ||
| 3 | + | ||
| 4 | + const { Worker } = require('worker_threads'); | ||
| 5 | + const { createHook } = require('async_hooks'); | ||
| 6 | + const { strictEqual } = require('assert'); | ||
| 7 | + | ||
| 8 | + let handle; | ||
| 9 | + | ||
| 10 | + createHook({ | ||
| 11 | + init(asyncId, type, triggerAsyncId, resource) { | ||
| 12 | + if (type === 'WORKER') { | ||
| 13 | + handle = resource; | ||
| 14 | + this.disable(); | ||
| 15 | + } | ||
| 16 | + } | ||
| 17 | + }).enable(); | ||
| 18 | + | ||
| 19 | + const w = new Worker('', { eval: true }); | ||
| 20 | + | ||
| 21 | + strictEqual(handle.hasRef(), true); | ||
| 22 | + w.unref(); | ||
| 23 | + strictEqual(handle.hasRef(), false); | ||
| 24 | + w.ref(); | ||
| 25 | + strictEqual(handle.hasRef(), true); | ||
| 26 | + | ||
| 27 | + w.on('exit', common.mustCall((exitCode) => { | ||
| 28 | + strictEqual(exitCode, 0); | ||
| 29 | + strictEqual(handle.hasRef(), true); | ||
| 30 | + setTimeout(common.mustCall(() => { | ||
| 31 | + strictEqual(handle.hasRef(), undefined); | ||
| 32 | + }), 0); | ||
| 33 | + })); | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments