Signals worker threads to terminate when the queue becomes empty.
void finish (
bool blocking = false
If blocking argument is true, wait for all worker threads to terminate
before returning. This option might be used in applications where
task results are never consumed-- e.g. when
TaskPool is employed as a
rudimentary scheduler for tasks which communicate by means other than