The point of these wrappers AFAIU is not only to add error_exit, but also
to be portable to Windows in the future.
This is historical because the code was largely inspired by glibc's
implementation of posix-aio. It doesn't need to be detached and since
Corentin wants to be able to join a worker, it makes sense to just avoid
detaching and pay the overhead of making the threads joinable.
Actually, I want to know if the queue is empty and if no job are
currently being processed: all worker are idle or stopped. I don't
really need pthread_join() for that, since worker can be idle (we
don't want to always start and stop the thread :) ).