So I took some time to write out last night's question as clearly as possible. I'm still groggy from a few all nighters (uni's a bitch), but here goes.
A global GameStateManager contains dynamically created GameStates. Each GameState has two GameStateData objects within (a read_block and write_block).
The user adds their tasks (function pointers) to the architecture. When completed, the architecture schedules them to each thread - these threads run the tasks on their individual queue (which will be reading from a read_block and writing to a write_block that were (often) created in a different thread - not thread-local copies; a pointer to a dynamic object created).
How will this behave with Nimrod's GC? Will the reference counting ignore when a reference is made by another thread, Will the cyclic collector work properly, Etc?
If not, the website says Nimrod is going to have a shared heap for all threads - so when can I expect that kind of functionality?
Furthermore, when it comes to synchronization, Nimrod uses lightweight mutexes right? The cost of it is akin to critical_sections or C++11 mutexes?
Thanks in advance everybody.
Thanks so much, Araq.