By the time the first world (main menu) is loaded, a game instance subsystem should have completed some async work, for example loaded assets or pre-compiled shaders. During this time, the “game” should not start and user input should be disabled (maybe with a loading screen). However, the game thread should not be blocked and the application should remain responsive (e.g. exit, window resizing).
How can we delay the engine until some async callback using C++?
How can this be done not only on startup but whenever background work is a pre-requisite to continuing?