From 310212db43c75561c46809bb8f204a5ab16f4be5 Mon Sep 17 00:00:00 2001 From: Marly Fleitas Date: Wed, 20 Apr 2022 18:05:55 +0200 Subject: [PATCH] src: check for tsfn in conditional_variable wait Fixes: #1150 PR-URL: https://github.com/nodejs/node-addon-api/pull/1168 Reviewed-By: Michael Dawson lk(mtx); - cv.wait(lk); + cv.wait(lk, [this] { return this->tsfn != nullptr; }); tsfn.BlockingCall([=](Napi::Env env, Function callback) { callback.Call({Number::New(env, static_cast(threadId))}); }); diff --git a/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc b/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc index 9add259..b36ab28 100644 --- a/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +++ b/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc @@ -99,7 +99,7 @@ class DelayedTSFNTask { // Entry point for std::thread void entryDelayedTSFN(int threadId) { std::unique_lock lk(mtx); - cv.wait(lk); + cv.wait(lk, [this] { return this->tsfn != nullptr; }); tsfn.BlockingCall(new double(threadId)); tsfn.Release(); };