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 @@ -309,17 +309,21 @@ class ThreadSafeFunction {
309309 }
310310
311311 void EmptyQueueAndMaybeDelete () {
312+ std::queue<void *> drain_queue;
313+ {
314+ node::Mutex::ScopedLock lock (this ->mutex );
315+ queue.swap (drain_queue);
316+ }
317+ for (; !drain_queue.empty (); drain_queue.pop ()) {
318+ call_js_cb (nullptr , nullptr , context, drain_queue.front ());
319+ }
312320 {
313321 node::Mutex::ScopedLock lock (this ->mutex );
314- for (; !queue.empty (); queue.pop ()) {
315- call_js_cb (nullptr , nullptr , context, queue.front ());
316- }
317322 if (thread_count > 0 ) {
318323 // At this point this TSFN is effectively done, but we need to keep
319324 // it alive for other threads that still have pointers to it until
320325 // they release them.
321326 // But we already release all the resources that we can at this point
322- queue = {};
323327 ReleaseResources ();
324328 return ;
325329 }
You can’t perform that action at this time.
0 commit comments