Add comments about Mrntt/Manager vs Mind sync/async design

This commit is contained in:
2025-09-12 09:52:02 -04:00
parent 4429135539
commit 96bf653167
+18 -1
View File
@@ -90,7 +90,24 @@ void ComponentThread::marionetteMain(ComponentThread& self)
self.getIoService().post([]()
{
// Initialize Mind object (threads) first
/** EXPLANATION:
* Initialize Salmanoff's Manager classes first.
* Manager classes' initialization is synchronous in nature, so we
* don't need the minds to be running to initialize them.
*
* Then we initialize the Minds. Minds are asynchronous and they
* call upon the async methods of the Manager classes. Device
* attachment is actually Mind specific and not Smo-global
*
* It is arguable whether library loading is Mind specific or
* Smo-global. You could argue that libraries should be loaded and
* unloaded dynamically as-needed by the bodies and worlds of
* particular Minds. You could also argue that we should load all
* libraries at startup and unload them at shutdown.
*
* The latter is cleaner and more resource-respecting. The former is
* easier to implement.
*/
globalMind->initializeReq(
[](bool success)
{