C++ thread pool which can dynamically adjust its capability basing on input parameters and program requests