можно же по идее, если нет нужды, изменять переменные в методе Unload, либо заюзать std::atomic для какой-то переменной, которая будет проверяться в потоке игры и изменяться в твоем потоке
атомик защитит только чтение самого флага, но если игра пройдет проверку if (active), а я в этот момент уже освобожу память или поинтеры, то рендер полезет в удаленную память и все равно будет краш, атомик не спасет от access violation внутри условия, если ресурсы уже удалены