The modules manager mainly manages all the modules and their interactions. It also manages the multiple threads. So you can define with the modules manager which modules should be run in parallel and which serial.

It is itself a module and can receive control messages (for configuration and information-requests).

The threading-management:
For example, if you have modules M1, M2, M3, M4, M5. You can now define how they are executed. For example you can say that you have 3 threads:
	T1: M1, M3
	T2: M2, M4
	T3: M5
Or with 2 threads like this:
	T1: M1, M3, M4
	T2: M2, M5
Or only one thread:
	T1: M1, M2, M3, M4, M5
You also can define the order of the execution. For example with 2 threads, you can also define this:
	T1: M3, M4, M1
	T2: M5, M2


{ Perhaps there should also be a possibility to prevent the execution of some modules each time. For example some modules (mapprovider, input) only do something if they receive a message. On the other site it creates a bit overhead for this additional check which is unneeded for most of the base-engines like physics and game logic. }

