thread pool using boost::thread