Custom logic/physics game loop / how to lock render thread for custom physics update

I working on my RTS game, where I want to controll physics loop by myself (for network synchranization, fixed ticks per seconds, client predictions, fastforwarding and consistensy).

Sadly pr#76462 still not applied somehow and i don’t want to move to any of forks i need to do some custom updates

For that i have my own GameManager, EntityHandler and EntityBase type, EntityHandler has update function that updates every EntityBase (that updates every registered component for that entity + some physics stuff), GameManager on ready launches separate thread that launches EntityHandler.update every N ticks. In ideal world i would write my own engine where i can copy all data for rendering and process parallel, but i have no time, nor money for that so since changing data while it renders 100% dangerous i need to somehow lock render thread until i finish processing entire logic and physics. Is there any way to do this?

I also don’t want to write entire logic on native, since it will be harder to make mods, so gdscript support is required, and this adds a lot of complexity for copying rendering data. At that point it easier for me to write simple OGL engine for my purpose, but it would be very hard to support multiple platforms, so yeah, no custom engine for now sadly

And i you have some other ideas for better architecture or better solution for my problem i would be glad to hear it!

EDIT: Actually, when i think about it probably its better to implement separate logic engine and then just render everything through godot. In future i will be able to move onto custom render engine. I got some benefits with that, like fixed-point physics and easier workflow. I will support modding with lua and yaml/json