You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
Since TSFN provides a queue to caching up calls to the creating thread, we don't have the ability to drain the queue if we think it's time to complete the job.
Describe the solution you'd like
Add a drain method to synchronously drain the threadsafe function (maybe mark it as closed too).
Describe alternatives you've considered
Release the tsfn with napi_release_threadsafe_function(tsfn, napi_tsfn_release) and wait the finalizer to be called asynchronously.
The text was updated successfully, but these errors were encountered:
@legendecas TBH I'm not sure if we can provide a synchronous API for draining the queue. AFAICT we would have to basically hijack the event loop by creating second event loop that runs until the queue is drained.
@gabrielschulhof I was thinking that maybe we can first mark the TSFN as aborted(closed) and then call a method which will work like DispatchOne, say DispatchAll, that draining the queue of TSFN on the JavaScript thread. If the callee is on non-JavaScript thread we can notify them with a conditional variable if appropriate.
Is your feature request related to a problem? Please describe.
Since TSFN provides a queue to caching up calls to the creating thread, we don't have the ability to drain the queue if we think it's time to complete the job.
Describe the solution you'd like
Add a drain method to synchronously drain the threadsafe function (maybe mark it as closed too).
Describe alternatives you've considered
Release the tsfn with
napi_release_threadsafe_function(tsfn, napi_tsfn_release)
and wait the finalizer to be called asynchronously.The text was updated successfully, but these errors were encountered: