MemoryManagerBase.cs 715 B

1234567891011121314151617181920212223242526272829303132
  1. using Ryujinx.Memory;
  2. using System.Diagnostics;
  3. using System.Threading;
  4. namespace Ryujinx.Cpu
  5. {
  6. public abstract class MemoryManagerBase : IRefCounted
  7. {
  8. private int _referenceCount;
  9. public void IncrementReferenceCount()
  10. {
  11. int newRefCount = Interlocked.Increment(ref _referenceCount);
  12. Debug.Assert(newRefCount >= 1);
  13. }
  14. public void DecrementReferenceCount()
  15. {
  16. int newRefCount = Interlocked.Decrement(ref _referenceCount);
  17. Debug.Assert(newRefCount >= 0);
  18. if (newRefCount == 0)
  19. {
  20. Destroy();
  21. }
  22. }
  23. protected abstract void Destroy();
  24. }
  25. }