/// <summary>
        /// Protected implementation of Dispose pattern.
        /// </summary>
        /// <param name="disposing"></param>
        protected override void Dispose(bool disposing)
        {
            if (isDisposed || !disposing)
            {
                return;
            }

            // Close shared memory.
            //
            sharedMemoryHandle?.Dispose();

            if (CleanupOnClose)
            {
                // Unlink shared map. Ignore the errors.
                //
                if (sharedMemoryMapName != null)
                {
                    _ = Native.SharedMemoryUnlink(sharedMemoryMapName);
                }

                CleanupOnClose = false;
            }

            isDisposed = true;
        }
        /// <summary>
        /// Create a new shared memory view.
        /// </summary>
        /// <param name="sharedMemoryMapName"></param>
        /// <param name="sharedMemorySize"></param>
        /// <returns></returns>
        public static new SharedMemoryMapView CreateNew(string sharedMemoryMapName, ulong sharedMemorySize)
        {
            // Try to unlink existing shared memory.
            //
            _ = Native.SharedMemoryUnlink(sharedMemoryMapName);

            // Create shared memory view.
            //
            var sharedMemoryMapView = new SharedMemoryMapView(
                sharedMemoryMapName,
                sharedMemorySize,
                Native.OpenFlags.O_CREAT | Native.OpenFlags.O_RDWR | Native.OpenFlags.O_EXCL);

            return(sharedMemoryMapView);
        }
Beispiel #3
0
        /// <summary>
        /// Protected implementation of Dispose pattern.
        /// </summary>
        /// <param name="disposing"></param>
        protected override void Dispose(bool disposing)
        {
            if (disposed)
            {
                return;
            }

            if (disposing)
            {
                // Close shared memory.
                //
                sharedMemoryHandle?.Dispose();

                // Unlink shared map. Ignore the errors.
                //
                _ = Native.SharedMemoryUnlink(sharedMemoryMapName);
            }

            disposed = true;
        }