A method at a computing device for sharing data between at least one publisher of the data and at least one subscriber to the data, the method comprising: defining a dynamically linked data library (DLDL) to include executable code (812, 912); loading the DLDL from a first process of a first publisher, the loading causing a memory allocation of shared executable code (812, 912), private data and shared data (814, 914) in a physical memory location; mapping the memory allocation of shared executable code (812,912), private data and shared data (814, 914) to a virtual memory location (820, 920) for the first process; executing the DLDL by a second process of a first subscriber, the executing causing mapping of the memory allocation of shared executable code (812, 912) and the shared data (814, 914) for the first process to be mapped to a virtual memory location (830, 930) for the second process; and allocating private data in physical memory and mapping to a virtual memory location for the second process, wherein the DLDL further includes a data object manager (154, 512) that creates a pool of data objects within the shared data (814, 914) allocation, the method further comprising: allocating a data object from the pool of data objects to the first process; receiving, at the object manager, a publication notification from the first process; notifying the second process of the publication; receiving a release from the second process, after said second process consumed the allocated data object; and returning the data object to the pool for future allocation. defining a dynamically linked data library (DLDL) to include executable code (812, 912); loading the DLDL from a first process of a first publisher, the loading causing a memory allocation of shared executable code (812, 912), private data and shared data (814, 914) in a physical memory location; mapping the memory allocation of shared executable code (812,912), private data and shared data (814, 914) to a virtual memory location (820, 920) for the first process; executing the DLDL by a second process of a first subscriber, the executing causing mapping of the memory allocation of shared executable code (812, 912) and the shared data (814, 914) for the first process to be mapped to a virtual memory location (830, 930) for the second process; and allocating private data in physical memory and mapping to a virtual memory location for the second process, wherein the DLDL further includes a data object manager (154, 512) that creates a pool of data objects within the shared data (814, 914) allocation, the method further comprising: allocating a data object from the pool of data objects to the first process; receiving, at the object manager, a publication notification from the first process; notifying the second process of the publication; receiving a release from the second process, after said second process consumed the allocated data object; and returning the data object to the pool for future allocation. allocating a data object from the pool of data objects to the first process; receiving, at the object manager, a publication notification from the first process; notifying the second process of the publication; receiving a release from the second process, after said second process consumed the allocated data object; and returning the data object to the pool for future allocation.