Joins the threads.
This function blocks until the threads in the pool have completed. If
stop() is not called prior to join(), the join()
call will wait until the pool has no more outstanding work.
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)