Create a thread pool with a `std::future<T> enqueue(...)` API / use `std::async`, push scene load tasks into it, swap with active scene if and when done.