File tree Expand file tree Collapse file tree 1 file changed +8
-4
lines changed
Expand file tree Collapse file tree 1 file changed +8
-4
lines changed Original file line number Diff line number Diff line change @@ -307,17 +307,21 @@ class ThreadSafeFunction {
307307 }
308308
309309 void EmptyQueueAndMaybeDelete () {
310+ std::queue<void *> drain_queue;
311+ {
312+ node::Mutex::ScopedLock lock (this ->mutex );
313+ queue.swap (drain_queue);
314+ }
315+ for (; !drain_queue.empty (); drain_queue.pop ()) {
316+ call_js_cb (nullptr , nullptr , context, drain_queue.front ());
317+ }
310318 {
311319 node::Mutex::ScopedLock lock (this ->mutex );
312- for (; !queue.empty (); queue.pop ()) {
313- call_js_cb (nullptr , nullptr , context, queue.front ());
314- }
315320 if (thread_count > 0 ) {
316321 // At this point this TSFN is effectively done, but we need to keep
317322 // it alive for other threads that still have pointers to it until
318323 // they release them.
319324 // But we already release all the resources that we can at this point
320- queue = {};
321325 ReleaseResources ();
322326 return ;
323327 }
You can’t perform that action at this time.
0 commit comments