Thanks, I take a look.
First I used sockets, but that's a lot of overhead. Then a concurrent queue, but it is still hard to track which threads are alive. Then again, I rarely use a pool, I just create one when I need it.
I prefer a few queues, one for new jobs and one for feedback, but that way you cannot check if a thread is still alive. And with jobs, I tend to have a lot of different ones after a while.