I have a C function which takes a callback and invokes it on another thread:
void call_in_new_thread(void (*callback)())
I hacked together a quick demo to test this out. It's using Rust instead of C for the native part, but that should be equivalent as Rust can compile to a normal shared library.
After running the demo, I would answer my own questions like this: