Exemplo n.º 1
0
        private void OnSlabAllocated(RioMemoryPoolSlab slab)
        {
            lock (_bufferIdMappings)
            {
                var memoryPtr   = slab.NativePointer;
                var bufferId    = _rio.RioRegisterBuffer(memoryPtr, (uint)slab.Length);
                var addressLong = memoryPtr.ToInt64();

                _bufferIdMappings.Add(new BufferMapping
                {
                    Id    = bufferId,
                    Start = addressLong,
                    End   = addressLong + slab.Length
                });
            }
        }
Exemplo n.º 2
0
        private void OnSlabDeallocated(RioMemoryPoolSlab slab)
        {
            var memoryPtr   = slab.NativePointer;
            var addressLong = memoryPtr.ToInt64();

            lock (_bufferIdMappings)
            {
                for (int i = _bufferIdMappings.Count - 1; i >= 0; i--)
                {
                    if (addressLong == _bufferIdMappings[i].Start)
                    {
                        _bufferIdMappings.RemoveAt(i);
                        break;
                    }
                }
            }
        }