If a thread in the pool finised its first task, than it will call _targetCompleted.set(),
And than the thead will continue to run its second task without calling _targetCompleted.reset().
If I call the Poco::ActiveThreadPool::join() function now, it returns immediately, even though there are still many tasks in the queue that haven't been completed.