Registration of C threads from callbacks #420
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request adds a new argument,
~thread_registration
, tofunptr
. Passing~thread_registration:true
indicates that the C thread that calls into OCaml through the function pointer should be registered with the OCaml runtime (viacaml_c_thread_register
).C threads so registered are automatically unregistered (via
caml_c_thread_unregister
) when they exit.This functionality is currently unavailable on Windows, which apparently provides little support for running functions on thread termination. Perhaps it's possible to implement using
RegisterWaitForSingleObject
; patches are, of course, very welcome! (@fdopen: if you have time to look at this, your help would be greatly appreciated.)Here's a quick example of the
thread_registration
in action, via a binding topthread_create
:This closes #269.