The cost of creating/destroying thread is expensive. To pool and reuse created thread, we should use Intel TBB instead of using `std::thread`