Have you considered Pipes? The solution that you are looking for may be Pipes.
Using pipes, ModuleB can send a message though a pipe connected to ModuleA requesting for the data that ModuleB wants. ModuleA can then send the data through another pipe that is connected to ModuleB.
This way, the two modules are decoupled.
We already did this appoarch, and was successful. But I was kind of feeling like it was more of a hack or a quick fix. So I am wondering, what is the best practice for multicore sharing proxies?
Thanks in advance.