On error, thr_pool_queue() returns -1 with errno set to the error code.

Notice the similarity of the func and arg arguments to the start_routine and arg arguments of pthread_create() shown in pthread_create Syntax. The thr_pool_queue() function can be used as a replacement for pthread_create() in
existing applications. Note that if you use thr_pool_queue() instead
of pthread_create(), you cannot use pthread_join() to
wait for the task to complete.