Yes, your understanding is correct.
Basically, there is an external function which pushes an object into a job queue. And another separate process running which reads off the queue.
The code is already setup to use pipe(), write(), read() and libev but I am working on switching it to use libuv. I've had some more success using
uv_poll_t and pipe(), write(), read() but it sounds like uv_async_t might be a more elegant solution. I will give it a try, thank you for help!