I don't know if it is exactly what you had in mind, but I wrote a system (C++ library with optional server process) to handle this sort of thing. It includes client APIs for C#, C++, C, Java, and Python, and they can all communicate with each other using the same data serialization protocol, so it works well for cross-language and/or cross-platform communication. The two processes can communicate with each other directly, or if you want to support N processes communicating, you can run the server which can hold the shared objects in its 'central location' and let the various clients see them and notify them when they've been changed, broadcast/multicast messages to each other, etc.
The code is all open source (BSD), and can be found here:
https://public.msli.com/lcs/muscle/