Architecture flaw?

Architecture flaw?

I've been reading the documentation on this architecture for a while now, and now that I've finally understand how it all fits together, I believe I've found a flaw in it's design.

The docs are rather specific, each system has it's own memory, and each system operates within its own execution state, with minimal interaction with other systems.

At first I thought each system was executed by just one thread, then I realized that the systems can issue sub-tasks, which go into the queue and get executed by whatever available threads.

This means that at any moment there can be more than one thread operating on a system, changing the memory of that system. Doesn't this invite concurrency issues?

The docs do not talk about this. I notice in free-step mode, whenever a "change" is made then the data needs to be sent into the StateManager. This is not the case in lock-step mode, and that must mean the data is modified by the executing thread.

This basically sends me to square 1. I must be misunderstanding something. What is the purpose of duplicating the memory in each system the sake of concurrency, while multiple threads can actually modify the same memory?

3 posts / novo 0
Último post
Para obter mais informações sobre otimizações de compiladores, consulte Aviso sobre otimizações.

Smoke is designed so each system can "update independently", as you pointed out. Within a system, it can update itself however makes sense. Most systems do use multiple threads to update. However, most use data decomposition to avoid most needs for locks. For example, say the AI system has 200 AI to update. It will divide the AI into groups of 50 and submit each group to be updated independently (using a parallel for loop). If the AI updateswrite to shared data, then a lock would be required. Some systems (like graphics) don't divide the work and run on one thread until complete.

I hope this helps,
Orion

Quoting arniarent
I've been reading the documentation on this architecture for a while now, and now that I've finally understand how it all fits together, I believe I've found a flaw in it's design.

The docs are rather specific, each system has it's own memory, and each system operates within its own execution state, with minimal interaction with other systems.

At first I thought each system was executed by just one thread, then I realized that the systems can issue sub-tasks, which go into the queue and get executed by whatever available threads.

This means that at any moment there can be more than one thread operating on a system, changing the memory of that system. Doesn't this invite concurrency issues?

The docs do not talk about this. I notice in free-step mode, whenever a "change" is made then the data needs to be sent into the StateManager. This is not the case in lock-step mode, and that must mean the data is modified by the executing thread.

This basically sends me to square 1. I must be misunderstanding something. What is the purpose of duplicating the memory in each system the sake of concurrency, while multiple threads can actually modify the same memory?

I've been reading the documentation on this architecture for a while now, and now that I've finally understand how it all fits together, I believe I've found a flaw in it's design.

The docs are rather specific, each system has it's own memory, and each system operates within its own execution state, with minimal interaction with other systems.

At first I thought each system was executed by just one thread, then I realized that the systems can issue sub-tasks, which go into the queue and get executed by whatever available threads.

This means that at any moment there can be more than one thread operating on a system, changing the memory of that system. Doesn't this invite concurrency issues?

The docs do not talk about this. I notice in free-step mode, whenever a "change" is made then the data needs to be sent into the StateManager. This is not the case in lock-step mode, and that must mean the data is modified by the executing thread.

This basically sends me to square 1. I must be misunderstanding something. What is the purpose of duplicating the memory in each system the sake of concurrency, while multiple threads can actually modify the same memory?

=======================================================================

architecture of computer using multiconcurency and multitasking in motherboard that handle several memory in a row. this can be manipulated in thread in operating system. multiple threads modify the same memory as it is using queue and programming method.

Regards, Hadi Setyono

Deixar um comentário

Faça login para adicionar um comentário. Não é membro? Inscreva-se hoje mesmo!