Не могли бы вы обозначить на пальцах содержание этих двух методов, чтобы понять - где там границы критической секции и как оная выбрана... Мне интересно - и для самообразования. На чем пишете? На Vulkan, OpenGL?
Но интересна сама суть - Update() расставляет геометрию и эффекты? Или отсекает от сцены то, что попадет в Render? В то время когда Render() рисует участок сцены, которая у вас попадает в обзор?
Рендер будет "молотить" в любом случае, поэтому многопоточная работа у вас происходит именно в расстановке геометрии и эффектов - в Update? Или наоборот...
Если Update лишь формирует поле обзора камеры игрока для Render с преобразованием участка 3D сцены в 2D изображение экрана то... Оный должен без блокировок читать Мир - который в свою очередь наполняется сущностями из вектора Entityes (это же у вас вектор состояний и объектов?) А наполнять Entityes должны уже некие потоки - сущности - активности игры, такие как игроки, неписи и эффекты мира? :) Я впервые разговариваю с разрабочиком движка - очень интересно.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Источник кода